Merge pull request #4 from Affectiva/affdex2.0

Affdex SDK 2.0 changes
This commit is contained in:
Abdelrahman Mahmoud 2015-09-03 17:38:39 -04:00
commit e1013e2a3a
78 changed files with 4626 additions and 245 deletions

View file

@ -37,7 +37,7 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Affdex, Version=1.0.5589.23093, Culture=neutral, processorArchitecture=x86"> <Reference Include="Affdex, Version=2.0.0.10, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>c:\Program Files (x86)\Affectiva\Affdex SDK\bin\release\Affdex.dll</HintPath> <HintPath>c:\Program Files (x86)\Affectiva\Affdex SDK\bin\release\Affdex.dll</HintPath>
</Reference> </Reference>
@ -55,8 +55,14 @@
<Reference Include="WindowsBase" /> <Reference Include="WindowsBase" />
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" /> <Reference Include="PresentationFramework" />
<Reference Include="WpfAnimatedGif">
<HintPath>$(ProjectDir)packages\WpfAnimatedGif.1.4.13\lib\net\WpfAnimatedGif.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="MetricSelectionUI.xaml.cs" />
<Compile Include="NameToResourceConverter.cs" />
<Compile Include="UpperCaseConverter.cs" />
<Page Include="$(ProjectDir)MainWindow.xaml"> <Page Include="$(ProjectDir)MainWindow.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
@ -68,6 +74,10 @@
<DependentUpon>$(ProjectDir)MainWindow.xaml</DependentUpon> <DependentUpon>$(ProjectDir)MainWindow.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Page Include="MetricSelectionUI.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="$(ProjectDir)Properties\AssemblyInfo.cs"> <Compile Include="$(ProjectDir)Properties\AssemblyInfo.cs">
@ -102,9 +112,59 @@
<Resource Include="$(ProjectDir)Resources\AffdexMe_Logo.ico" /> <Resource Include="$(ProjectDir)Resources\AffdexMe_Logo.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="affdex-native.dll"> <Content Include="affdex-native.dll" />
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <Resource Include="anger.jpg" />
</Content> <Resource Include="attention.jpg" />
<Resource Include="brow_furrow.jpg" />
<Resource Include="brow_raise.jpg" />
<Resource Include="chin_raise.jpg" />
<Resource Include="contempt.jpg" />
<Resource Include="disgust.jpg" />
<Resource Include="engagement.jpg" />
<Resource Include="eye_closure.jpg" />
<Resource Include="fear.jpg" />
<Resource Include="frown.jpg" />
<Resource Include="inner_brow_raise.jpg" />
<Resource Include="joy.jpg" />
<Resource Include="lip_press.jpg" />
<Resource Include="lip_pucker.jpg" />
<Resource Include="lip_suck.jpg" />
<Resource Include="mouth_open.jpg" />
<Resource Include="negative_valence.jpg" />
<Resource Include="nose_wrinkle.jpg" />
<Resource Include="positive_valence.jpg" />
<Resource Include="sadness.jpg" />
<Resource Include="smile.jpg" />
<Resource Include="smirk.jpg" />
<Resource Include="surprise.jpg" />
<Resource Include="upper_lip_raise.jpg" />
<Resource Include="valence.jpg" />
<Resource Include="anger.gif" />
<Resource Include="attention.gif" />
<Resource Include="brow_furrow.gif" />
<Resource Include="brow_raise.gif" />
<Resource Include="chin_raise.gif" />
<Resource Include="contempt.gif" />
<Resource Include="disgust.gif" />
<Resource Include="engagement.gif" />
<Resource Include="eye_closure.gif" />
<Resource Include="fear.gif" />
<Resource Include="frown.gif" />
<Resource Include="inner_brow_raise.gif" />
<Resource Include="joy.gif" />
<Resource Include="lip_press.gif" />
<Resource Include="lip_pucker.gif" />
<Resource Include="lip_suck.gif" />
<Resource Include="mouth_open.gif" />
<Resource Include="negative_valence.gif" />
<Resource Include="nose_wrinkle.gif" />
<Resource Include="positive_valence.gif" />
<Resource Include="sadness.gif" />
<Resource Include="smile.gif" />
<Resource Include="smirk.gif" />
<Resource Include="surprise.gif" />
<Resource Include="upper_lip_raise.gif" />
<Resource Include="valence.gif" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup> <PropertyGroup>

View file

@ -28,7 +28,7 @@
<Setter Property="Margin" Value="1"/> <Setter Property="Margin" Value="1"/>
<Setter Property="Height" Value="30"/> <Setter Property="Height" Value="30"/>
<Setter Property="MinWidth" Value="20"/> <Setter Property="MinWidth" Value="20"/>
<Setter Property="FontSize" Value="13"/> <Setter Property="FontSize" Value="11"/>
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/> <Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
@ -81,7 +81,7 @@
<Setter Property="Margin" Value="1"/> <Setter Property="Margin" Value="1"/>
<Setter Property="Height" Value="30"/> <Setter Property="Height" Value="30"/>
<Setter Property="MinWidth" Value="20"/> <Setter Property="MinWidth" Value="20"/>
<Setter Property="FontSize" Value="13"/> <Setter Property="FontSize" Value="11"/>
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/> <Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
@ -103,7 +103,8 @@
<Trigger Property="IsMouseOver" Value="True"> <Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.2"/> <Setter Property="Opacity" TargetName="rectangle" Value="0.2"/>
</Trigger> </Trigger>
<Trigger Property="IsPressed" Value="True"> <Trigger Property
="IsPressed" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.3"/> <Setter Property="Opacity" TargetName="rectangle" Value="0.3"/>
</Trigger> </Trigger>
<Trigger Property="IsEnabled" Value="False"> <Trigger Property="IsEnabled" Value="False">
@ -127,13 +128,16 @@
<StackPanel Name="stackPanelImage" Orientation="Vertical" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> <StackPanel Name="stackPanelImage" Orientation="Vertical" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid Name="gridAffdexFaceDisplay" VerticalAlignment="Stretch" Width="auto" Height="560" > <Grid Name="gridAffdexFaceDisplay" VerticalAlignment="Stretch" Width="auto" Height="560" >
<Image Name="imgAffdexFaceDisplay" Visibility="Hidden" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="UniformToFill"/> <Image Name="imgAffdexFaceDisplay" Visibility="Hidden" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="UniformToFill"/>
<Image Name="imgAffdexLogoDisplay" Margin="40" Width="auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" <Image Name="imgAffdexLogoDisplay" Margin="40" Width="auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Height="auto" Source="Resources/AffectivaLogo1.png" Visibility="Visible"/> Height="auto" Source="AffectivaLogo1.png" Visibility="Visible"/>
<Canvas Name="canvasFacePoints" HorizontalAlignment="Center" VerticalAlignment="Center" /> <Canvas Name="canvasFacePoints" HorizontalAlignment="Center" VerticalAlignment="Center" />
<TextBlock Name="interocularDistanceDisplay" Visibility="Hidden" Text="Interocular Distance: " FontWeight="SemiBold" Foreground="White" VerticalAlignment="Center" Margin="10,131,0,413"/>
<TextBlock Name="pitchDisplay" Visibility="Hidden" Text="pitch: " FontWeight="SemiBold" Foreground="White" VerticalAlignment="Center" Margin="10,131,0,380"/>
<TextBlock Name="yawDisplay" Visibility="Hidden" Text="Yaw: " FontWeight="SemiBold" Foreground="White" VerticalAlignment="Center" Margin="10,131,0,347"/>
<TextBlock Name="rollDisplay" Visibility="Hidden" Text="Roll: " FontWeight="SemiBold" Foreground="White" VerticalAlignment="Center" Margin="10,131,0,314"/>
</Grid> </Grid>
</StackPanel> </StackPanel>
@ -158,51 +162,51 @@
<RowDefinition Height="40" /> <RowDefinition Height="40" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="0" Margin="0,0,0,0"> <StackPanel Name="stackPanel0" Orientation="Vertical" Grid.Row="0" Grid.Column="0" Margin="0,0,0,0">
<TextBlock Name="txtSmileClassifierName" Text="SMILE" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/> <TextBlock Name="stackPanel0Name" Text="STACKPANEL0" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid> <Grid>
<TextBlock Name="txtSmileClassifierValueBackground" Width="50" Background="LimeGreen" HorizontalAlignment="Center"/> <TextBlock Name="stackPanel0ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center"/>
<TextBlock Name="txtSmileClassifierValue" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center"/> <TextBlock Name="stackPanel0Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center"/>
</Grid> </Grid>
</StackPanel> </StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="2" Margin="0,0,0,0" > <StackPanel Name="stackPanel1" Orientation="Vertical" Grid.Row="0" Grid.Column="2" Margin="0,0,0,0" >
<TextBlock Name="txtFrownClassifierName" Text="FROWN" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/> <TextBlock Name="stackPanel1Name" Text="STACKPANEL1" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid> <Grid>
<TextBlock Name="txtFrownClassifierValueBackground" Width="50" Background="LimeGreen" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel1ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="txtFrownClassifierValue" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel1Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" />
</Grid> </Grid>
</StackPanel> </StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="0" Margin="0,0,0,0" > <StackPanel Name="stackPanel2" Orientation="Vertical" Grid.Row="1" Grid.Column="0" Margin="0,0,0,0" >
<TextBlock Name="txtBrowRaiseClassifierName" Text="BROW RAISE" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/> <TextBlock Name="stackPanel2Name" Text="STACKPANEL2" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid> <Grid>
<TextBlock Name="txtBrowRaiseClassifierValueBackground" Width="50" Background="LimeGreen" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel2ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="txtBrowRaiseClassifierValue" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel2Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" />
</Grid> </Grid>
</StackPanel> </StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="2" Margin="0,0,0,0" > <StackPanel Name="stackPanel3" Orientation="Vertical" Grid.Row="1" Grid.Column="2" Margin="0,0,0,0" >
<TextBlock Name="txtValenceClassifierName" Text="VALENCE" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/> <TextBlock Name="stackPanel3Name" Text="STACKPANEL3" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid> <Grid>
<TextBlock Name="txtValenceClassifierValueBackground" Width="50" Background="LimeGreen" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel3ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="txtValenceClassifierValue" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center"/> <TextBlock Name="stackPanel3Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center"/>
</Grid> </Grid>
</StackPanel> </StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="2" Grid.Column="0" Margin="0,0,0,0" > <StackPanel Name="stackPanel4" Orientation="Vertical" Grid.Row="2" Grid.Column="0" Margin="0,0,0,0" >
<TextBlock Name="txtBrowLowerClassifierName" Text="BROW FURROW" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/> <TextBlock Name="stackPanel4Name" Text="STACKPANEL4" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center"/>
<Grid> <Grid>
<TextBlock Name="txtBrowLowerClassifierValueBackground" Width="50" Background="LimeGreen" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel4ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="txtBrowLowerClassifierValue" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel4Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" />
</Grid> </Grid>
</StackPanel> </StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="2" Grid.Column="2" Margin="0,0,0,0" > <StackPanel Name="stackPanel5" Orientation="Vertical" Grid.Row="2" Grid.Column="2" Margin="0,0,0,0" >
<TextBlock Name="txtEngagementClassifierName" Text="ENGAGEMENT" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel5Name" Text="STACKPANEL5" Foreground="OrangeRed" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center" />
<Grid> <Grid>
<TextBlock Name="txtEngagementClassifierValueBackground" Width="50" Background="LimeGreen" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel5ValueBackgroud" Width="50" Background="LimeGreen" HorizontalAlignment="Center" />
<TextBlock Name="txtEngagementClassifierValue" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" /> <TextBlock Name="stackPanel5Value" Width="50" TextAlignment="Center" Text="10%" FontWeight="SemiBold" Foreground="Black" HorizontalAlignment="Center" />
</Grid> </Grid>
</StackPanel> </StackPanel>
</Grid> </Grid>
@ -224,7 +228,7 @@
<Image Name="imgAffdexLogoBackground" Width="auto" Grid.Column="1" Grid.Row="1" <Image Name="imgAffdexLogoBackground" Width="auto" Grid.Column="1" Grid.Row="1"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Height="auto" Source="Resources/AffectivaLogo1.png" Margin="0,0,0,-34" Grid.RowSpan="2"/> Height="auto" Source="AffectivaLogo1.png" Margin="0,0,0,-34" Grid.RowSpan="2"/>
</Grid> </Grid>
</StackPanel> </StackPanel>
</Grid> </Grid>
@ -234,11 +238,13 @@
<Grid HorizontalAlignment="Center"> <Grid HorizontalAlignment="Center">
<GroupBox Margin="0,5,0,0" Height="40" VerticalAlignment="Stretch" BorderBrush="Transparent" BorderThickness="0"> <GroupBox Margin="0,5,0,0" Height="40" VerticalAlignment="Stretch" BorderBrush="Transparent" BorderThickness="0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Name="btnStartCamera" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="55" Content="Start" /> <Button Name="btnStartCamera" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="40" Content="Start" />
<Button Name="btnResetCamera" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="56" Content="Reset" /> <Button Name="btnResetCamera" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="40" Content="Reset" />
<Button Name="btnShowPoints" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="90" Content="Show Points" /> <Button Name="btnShowPoints" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="80" Content="Show Points" />
<Button Name="btnStopCamera" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="55" Content="Stop" /> <Button Name="btnShowMeasurements" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="120" Content="Show Measurements" />
<Button Name="btnExit" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Bottom" Width="55" Content="Exit" /> <Button Name="btnChooseWin" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="60" Content="Classifiers" Click="btnChooseWin_Click" />
<Button Name="btnStopCamera" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Top" Width="40" Content="Stop" />
<Button Name="btnExit" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,5,0" VerticalAlignment="Bottom" Width="35" Content="Exit" />
</StackPanel> </StackPanel>
</GroupBox> </GroupBox>
</Grid> </Grid>

View file

@ -10,38 +10,21 @@ using System.Windows.Controls;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using System.Windows.Shapes; using System.Windows.Shapes;
using System.Collections.Specialized;
using Microsoft.Win32; using Microsoft.Win32;
using System.Reflection;
namespace AffdexMe namespace AffdexMe
{ {
/// <summary> /// <summary>
/// Interaction logic for MainWindow.xaml /// Interaction logic for MainWindow.xaml
/// </summary> /// </summary>
public partial class MainWindow : Window public partial class MainWindow : Window, Affdex.ImageListener, Affdex.ProcessStatusListener
{ {
/// <summary>
/// Location of Affdex Data files
/// </summary>
private const String AFFDEX_DATA_PATH = "C:\\Program Files (x86)\\Affectiva\\Affdex SDK\\data";
/// <summary>
/// Location of AffdexSDK Licence file
/// </summary>
private const String AFFDEX_LICENSE_FILE = "C:\\Program Files (x86)\\Affectiva\\Affdex SDK\\affdex.license";
#region Member Variables and Enums #region Member Variables and Enums
enum AffdexFaceClassifiers : int
{
Smile = 0,
BrowFurrow = 1,
BrowRaise = 2,
LipCornerDepressor = 3,
Engagement = 4,
Valence = 5
};
/// <summary> /// <summary>
/// The minimum length of the Classifier Value textbox /// The minimum length of the Classifier Value textbox
/// </summary> /// </summary>
@ -71,8 +54,9 @@ namespace AffdexMe
private Affdex.CameraDetector mCameraDetector; private Affdex.CameraDetector mCameraDetector;
private DateTime mStartTime; private StringCollection mEnabledClassifiers;
private DateTime mStartTime;
private float mCurrentTimeStamp; private float mCurrentTimeStamp;
/// <summary> /// <summary>
@ -82,6 +66,7 @@ namespace AffdexMe
private double mImageYScaleFactor; private double mImageYScaleFactor;
private bool mShowFacePoints; private bool mShowFacePoints;
private bool mShowMeasurements;
#endregion #endregion
@ -109,65 +94,34 @@ namespace AffdexMe
#region Listener Implementation #region Listener Implementation
/// <summary> public void onImageResults(Dictionary<int, Affdex.Face> faces, Affdex.Frame image)
///
/// </summary>
class Listener : Affdex.ImageListener, Affdex.ProcessStatusListener
{ {
public event EventHandler<ImageCaptureDataUpdateArgs> ImageCaptureUpdate; // For now only single face is supported
public event EventHandler<ImageResultsDataUpdateArgs> ImageResultsUpdate; if ((faces.Count() >= 1))
public event EventHandler<Affdex.AffdexException> ExceptionHandler;
public void onImageResults(Dictionary<int, Affdex.Face> faces, Affdex.Frame image)
{ {
// For now only single face is supported Affdex.Face face = faces[0];
if ((faces.Count() >= 1))
{
Affdex.Face face = faces[0];
if (ImageResultsUpdate != null) UpdateClassifierPanel(face);
{ DisplayFeaturePoints(image, face);
ImageResultsDataUpdateArgs imageResultsData = new ImageResultsDataUpdateArgs() DisplayMeasurements(face);
{
Image = image,
ImageResultsTimeStamp = image.getTimestamp(),
Face = face
};
ImageResultsUpdate(this, imageResultsData);
}
}
}
/// <summary>
///
/// </summary>
/// <param name="affdexImage"></param>
public void onImageCapture(Affdex.Frame image)
{
if (ImageCaptureUpdate != null)
{
ImageCaptureDataUpdateArgs imageCaptureData = new ImageCaptureDataUpdateArgs()
{
Image = image,
ImageCaptureTimeStamp = image.getTimestamp()
};
ImageCaptureUpdate(this, imageCaptureData);
}
} }
}
public void onProcessingException(Affdex.AffdexException ex) public void onImageCapture(Affdex.Frame image)
{ {
if (ExceptionHandler != null) UpdateClassifierPanel();
{ DisplayImageToOffscreenCanvas(image);
ExceptionHandler(this, ex); }
}
}
public void onProcessingFinished() public void onProcessingException(Affdex.AffdexException ex)
{ {
} String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
}; ShowExceptionAndShutDown(message);
}
public void onProcessingFinished()
{
}
#endregion #endregion
@ -183,6 +137,67 @@ namespace AffdexMe
})); }));
} }
private String GetClassifierDataFolder()
{
// First see if we can get the Install Path from the registry
RegistryKey rkCurrentUser = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
RegistryKey rkAffdexMe = rkCurrentUser.OpenSubKey("Software\\Affectiva\\AffdexMe");
String classifierPath = String.Empty;
if (rkAffdexMe != null && !String.IsNullOrEmpty((String)rkAffdexMe.GetValue("Install Directory")))
{
classifierPath = (String)rkAffdexMe.GetValue("Install Directory") + "\\data";
}
else
{
String affdexClassifierDir = Environment.GetEnvironmentVariable("AFFDEX_DATA_DIR");
if (String.IsNullOrEmpty(affdexClassifierDir))
{
ShowExceptionAndShutDown("AFFDEX_DATA_DIR environment variable (Classifier Data Directory) is not set");
}
else
{
classifierPath = affdexClassifierDir;
}
}
DirectoryInfo directoryInfo = new DirectoryInfo(classifierPath);
if (!directoryInfo.Exists)
{
ShowExceptionAndShutDown("AFFDEX_DATA_DIR (Classifier Data Directory) is set to an invalid folder location");
}
return classifierPath;
}
private String GetAffdexLicense()
{
// First see if we can get the License from the registry
RegistryKey rkCurrentUser = Registry.LocalMachine;
RegistryKey rkAffdexMe = rkCurrentUser.OpenSubKey("Software\\Affectiva\\AffdexMe");
String licensePath = String.Empty;
if ( rkAffdexMe != null && !String.IsNullOrEmpty((string)rkAffdexMe.GetValue("Install Directory")))
{
licensePath = (String)rkAffdexMe.GetValue("Install Directory");
}
else
{
licensePath = Environment.GetEnvironmentVariable("AFFDEX_LICENSE_DIR");
if (String.IsNullOrEmpty(licensePath))
{
ShowExceptionAndShutDown("AFFDEX_LICENSE_DIR environment variable (Affdex License Folder) is not set");
}
}
// Test the directory
DirectoryInfo directoryInfo = new DirectoryInfo(licensePath);
if (!directoryInfo.Exists)
{
ShowExceptionAndShutDown("AFFDEX_License_DIR (Affex License Folder) is set to an invalid folder location");
}
return licensePath + "\\affdex.license";
}
public MainWindow() public MainWindow()
{ {
InitializeComponent(); InitializeComponent();
@ -193,6 +208,7 @@ namespace AffdexMe
{ {
InitializeCameraApp(); InitializeCameraApp();
mEnabledClassifiers = AffdexMe.Settings.Default.Classifiers;
// Enable/Disable buttons on start // Enable/Disable buttons on start
btnStartCamera.IsEnabled = btnStartCamera.IsEnabled =
btnResetCamera.IsEnabled = btnResetCamera.IsEnabled =
@ -200,6 +216,16 @@ namespace AffdexMe
btnStopCamera.IsEnabled = btnStopCamera.IsEnabled =
btnExit.IsEnabled = true; btnExit.IsEnabled = true;
if (AffdexMe.Settings.Default.ShowPoints)
{
btnShowPoints_Click(null, null);
}
if (AffdexMe.Settings.Default.ShowMeasurements)
{
btnShowMeasurements_Click(null, null);
}
this.ContentRendered += MainWindow_ContentRendered; this.ContentRendered += MainWindow_ContentRendered;
} }
@ -248,6 +274,29 @@ namespace AffdexMe
return null; return null;
} }
private void DisplayMeasurements(Affdex.Face affdexFace)
{
//Update measurements
try
{
var result = this.Dispatcher.BeginInvoke((Action)(() =>
{
if (mShowMeasurements && (affdexFace != null))
{
interocularDistanceDisplay.Text = String.Format("Interocular Distance: {0}", affdexFace.Measurements.InterocularDistance);
pitchDisplay.Text = String.Format("Pitch Angle: {0}", affdexFace.Measurements.Orientation.Pitch);
yawDisplay.Text = String.Format("Yaw Angle: {0}", affdexFace.Measurements.Orientation.Yaw);
rollDisplay.Text = String.Format("Roll Angle: {0}", affdexFace.Measurements.Orientation.Roll);
}
}));
}
catch(Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private void DisplayFeaturePoints(Affdex.Frame affdexImage, Affdex.Face affdexFace) private void DisplayFeaturePoints(Affdex.Frame affdexImage, Affdex.Face affdexFace)
{ {
try try
@ -255,7 +304,7 @@ namespace AffdexMe
// Plot Face Points // Plot Face Points
if ((mShowFacePoints) && (affdexFace != null)) if ((mShowFacePoints) && (affdexFace != null))
{ {
canvasFacePoints.Dispatcher.BeginInvoke((Action)(() => var result = this.Dispatcher.BeginInvoke((Action)(() =>
{ {
if ((mCameraDetector != null) && (mCameraDetector.isRunning())) if ((mCameraDetector != null) && (mCameraDetector.isRunning()))
{ {
@ -268,7 +317,7 @@ namespace AffdexMe
mImageYScaleFactor = imgAffdexFaceDisplay.ActualHeight / affdexImage.getHeight(); mImageYScaleFactor = imgAffdexFaceDisplay.ActualHeight / affdexImage.getHeight();
SolidColorBrush pointBrush = new SolidColorBrush(Colors.Cornsilk); SolidColorBrush pointBrush = new SolidColorBrush(Colors.Cornsilk);
var featurePoints = affdexFace.getFeaturePoints(); var featurePoints = affdexFace.FeaturePoints;
foreach (var point in featurePoints) foreach (var point in featurePoints)
{ {
Ellipse ellipse = new Ellipse() Ellipse ellipse = new Ellipse()
@ -279,15 +328,15 @@ namespace AffdexMe
}; };
canvasFacePoints.Children.Add(ellipse); canvasFacePoints.Children.Add(ellipse);
Canvas.SetLeft(ellipse, point.x * mImageXScaleFactor); Canvas.SetLeft(ellipse, point.X * mImageXScaleFactor);
Canvas.SetTop(ellipse, point.y * mImageYScaleFactor); Canvas.SetTop(ellipse, point.Y * mImageYScaleFactor);
} }
// Draw Face Bounding Rectangle // Draw Face Bounding Rectangle
var xMax = featurePoints.Max(r => r.x); var xMax = featurePoints.Max(r => r.X);
var xMin = featurePoints.Min(r => r.x); var xMin = featurePoints.Min(r => r.X);
var yMax = featurePoints.Max(r => r.y); var yMax = featurePoints.Max(r => r.Y);
var yMin = featurePoints.Min(r => r.y); var yMin = featurePoints.Min(r => r.Y);
// Adjust the x/y min to accomodate all points // Adjust the x/y min to accomodate all points
xMin -= 2; xMin -= 2;
@ -312,14 +361,11 @@ namespace AffdexMe
Canvas.SetTop(boundingBox, yMin * mImageYScaleFactor); Canvas.SetTop(boundingBox, yMin * mImageYScaleFactor);
mFeaturePointsSkipCount = 0; mFeaturePointsSkipCount = 0;
affdexFace.Dispose();
affdexImage.Dispose();
} }
})); }));
} }
} }
catch (Exception ex) catch(Exception ex)
{ {
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message; String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message); ShowExceptionAndShutDown(message);
@ -343,13 +389,19 @@ namespace AffdexMe
// A Face was found - this comes from ImageResults CallBack // A Face was found - this comes from ImageResults CallBack
if (face != null) if (face != null)
{ {
// Convert classifier value to Integer (percentage) for display purposes int index = 0;
mAffdexClassifierValues[(int)AffdexFaceClassifiers.Smile] = Convert.ToInt32(Math.Round(face.getSmileScore(), MidpointRounding.AwayFromZero)); foreach (String metric in mEnabledClassifiers)
mAffdexClassifierValues[(int)AffdexFaceClassifiers.BrowFurrow] = Convert.ToInt32(Math.Round(face.getBrowFurrowScore(), MidpointRounding.AwayFromZero)); {
mAffdexClassifierValues[(int)AffdexFaceClassifiers.BrowRaise] = Convert.ToInt32(Math.Round(face.getBrowRaiseScore(), MidpointRounding.AwayFromZero)); PropertyInfo info;
mAffdexClassifierValues[(int)AffdexFaceClassifiers.LipCornerDepressor] = Convert.ToInt32(Math.Round(face.getLipCornerDepressorScore(), MidpointRounding.AwayFromZero)); float value = -1;
mAffdexClassifierValues[(int)AffdexFaceClassifiers.Engagement] = Convert.ToInt32(Math.Round(face.getEngagementScore(), MidpointRounding.AwayFromZero)); if ((info = face.Expressions.GetType().GetProperty(NameMappings(metric))) != null) value = (float)info.GetValue(face.Expressions, null);
mAffdexClassifierValues[(int)AffdexFaceClassifiers.Valence] = Convert.ToInt32(Math.Round(face.getValenceScore(), MidpointRounding.AwayFromZero)); else if ((info = face.Emotions.GetType().GetProperty(NameMappings(metric))) != null) value = (float)info.GetValue(face.Emotions, null);
// Convert classifier value to Integer (percentage) for display purposes
mAffdexClassifierValues[index] = Convert.ToInt32(Math.Round(value, MidpointRounding.AwayFromZero));
index++;
}
// Reset the cache count // Reset the cache count
mCachedSkipFaceResultsCount = 0; mCachedSkipFaceResultsCount = 0;
@ -362,12 +414,7 @@ namespace AffdexMe
} }
else if (++mCachedSkipFaceResultsCount > 10) else if (++mCachedSkipFaceResultsCount > 10)
{ {
mAffdexClassifierValues[(int)AffdexFaceClassifiers.Smile] = for (int r = 0; r < mAffdexClassifierValues.Count(); r++) mAffdexClassifierValues[r] = 0;
mAffdexClassifierValues[(int)AffdexFaceClassifiers.BrowFurrow] =
mAffdexClassifierValues[(int)AffdexFaceClassifiers.BrowRaise] =
mAffdexClassifierValues[(int)AffdexFaceClassifiers.LipCornerDepressor] =
mAffdexClassifierValues[(int)AffdexFaceClassifiers.Engagement] =
mAffdexClassifierValues[(int)AffdexFaceClassifiers.Valence] = 0;
// If we haven't seen a face in the past 30 frames (roughly 30/15fps seconds), don't display the classifiers // If we haven't seen a face in the past 30 frames (roughly 30/15fps seconds), don't display the classifiers
if (mCachedSkipFaceResultsCount >= 30) if (mCachedSkipFaceResultsCount >= 30)
@ -376,21 +423,26 @@ namespace AffdexMe
} }
} }
// Only display the classifiers and FacePoints if we've had a re var result = this.Dispatcher.BeginInvoke((Action)(() =>
if (displayClassifiers)
{ {
// Update the Classifier Display // Only display the classifiers and FacePoints if we've had a re
UpdateClassifier(txtSmileClassifierName, txtSmileClassifierValue, txtSmileClassifierValueBackground, AffdexFaceClassifiers.Smile); if (displayClassifiers)
UpdateClassifier(txtFrownClassifierName, txtFrownClassifierValue, txtFrownClassifierValueBackground, AffdexFaceClassifiers.LipCornerDepressor); {
UpdateClassifier(txtBrowRaiseClassifierName, txtBrowRaiseClassifierValue, txtBrowRaiseClassifierValueBackground, AffdexFaceClassifiers.BrowRaise); int r = 0;
UpdateClassifier(txtValenceClassifierName, txtValenceClassifierValue, txtValenceClassifierValueBackground, AffdexFaceClassifiers.Valence); foreach (String classifier in mEnabledClassifiers)
UpdateClassifier(txtBrowLowerClassifierName, txtBrowLowerClassifierValue, txtBrowLowerClassifierValueBackground, AffdexFaceClassifiers.BrowFurrow); {
UpdateClassifier(txtEngagementClassifierName, txtEngagementClassifierValue, txtEngagementClassifierValueBackground, AffdexFaceClassifiers.Engagement); String stackPanelName = String.Format("stackPanel{0}", r);
} TextBlock ClassifierName = (TextBlock) gridClassifierDisplay.FindName(String.Format("{0}Name", stackPanelName));
TextBlock ClassifierValueBackgroud = (TextBlock)gridClassifierDisplay.FindName(String.Format("{0}ValueBackgroud", stackPanelName));
TextBlock ClassifierValue = (TextBlock)gridClassifierDisplay.FindName(String.Format("{0}Value", stackPanelName));
// Update the Classifier Display
UpdateClassifier(ClassifierName, ClassifierValue, ClassifierValueBackgroud, classifier, r);
r++;
// Update the Image control from the UI thread }
stackPanelClassifiers.Dispatcher.BeginInvoke((Action)(() => }
{
// Update the Image control from the UI thread
if ((mCameraDetector != null) && (mCameraDetector.isRunning())) if ((mCameraDetector != null) && (mCameraDetector.isRunning()))
{ {
if (imgAffdexFaceDisplay.Visibility == Visibility.Hidden) if (imgAffdexFaceDisplay.Visibility == Visibility.Hidden)
@ -400,6 +452,10 @@ namespace AffdexMe
stackPanelLogoBackground.Visibility = Visibility.Visible; stackPanelLogoBackground.Visibility = Visibility.Visible;
} }
stackPanelClassifiers.Visibility = (displayClassifiers)?Visibility.Visible : Visibility.Hidden; stackPanelClassifiers.Visibility = (displayClassifiers)?Visibility.Visible : Visibility.Hidden;
interocularDistanceDisplay.Visibility = (displayClassifiers && mShowMeasurements) ? Visibility.Visible : Visibility.Hidden;
pitchDisplay.Visibility = (displayClassifiers && mShowMeasurements) ? Visibility.Visible : Visibility.Hidden;
yawDisplay.Visibility = (displayClassifiers && mShowMeasurements) ? Visibility.Visible : Visibility.Hidden;
rollDisplay.Visibility = (displayClassifiers && mShowMeasurements) ? Visibility.Visible : Visibility.Hidden;
} }
})); }));
} }
@ -411,11 +467,22 @@ namespace AffdexMe
} }
} }
private String NameMappings(String classifierName)
{
if (classifierName == "Frown")
{
return "LipCornerDepressor";
}
return classifierName;
}
private void UpdateClassifier(TextBlock txtClassifier, TextBlock txtClassifierValue, private void UpdateClassifier(TextBlock txtClassifier, TextBlock txtClassifierValue,
TextBlock txtClassifierValueBackground, AffdexFaceClassifiers classifierIndex) TextBlock txtClassifierValueBackground, String classifierName, int classifierIndex)
{ {
try try
{ {
UpperCaseConverter conv = new UpperCaseConverter();
txtClassifier.Text = (String)conv.Convert(classifierName, null, null, null);
int classifierValue = mAffdexClassifierValues[(int)classifierIndex]; int classifierValue = mAffdexClassifierValues[(int)classifierIndex];
// Calculate the width // Calculate the width
@ -432,13 +499,9 @@ namespace AffdexMe
backgroundColor = Colors.Red; backgroundColor = Colors.Red;
} }
txtClassifierValue.Dispatcher.BeginInvoke((Action)(() => txtClassifierValueBackground.Background = new SolidColorBrush(backgroundColor);
{ txtClassifierValueBackground.Width = width;
txtClassifierValueBackground.Background = new SolidColorBrush(backgroundColor); txtClassifierValue.Text = String.Format("{0}%", classifierValue);
txtClassifierValueBackground.Width = width;
txtClassifierValue.Text = String.Format("{0}%", classifierValue);
}));
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -450,7 +513,7 @@ namespace AffdexMe
private void DisplayImageToOffscreenCanvas(Affdex.Frame image) private void DisplayImageToOffscreenCanvas(Affdex.Frame image)
{ {
// Update the Image control from the UI thread // Update the Image control from the UI thread
imgAffdexFaceDisplay.Dispatcher.BeginInvoke((Action)(() => var result = this.Dispatcher.BeginInvoke((Action)(() =>
{ {
try try
{ {
@ -493,6 +556,7 @@ namespace AffdexMe
btnStartCamera.Click += btnStartCamera_Click; btnStartCamera.Click += btnStartCamera_Click;
btnStopCamera.Click += btnStopCamera_Click; btnStopCamera.Click += btnStopCamera_Click;
btnShowPoints.Click += btnShowPoints_Click; btnShowPoints.Click += btnShowPoints_Click;
btnShowMeasurements.Click += btnShowMeasurements_Click;
btnResetCamera.Click += btnResetCamera_Click; btnResetCamera.Click += btnResetCamera_Click;
btnExit.Click += btnExit_Click; btnExit.Click += btnExit_Click;
@ -510,6 +574,7 @@ namespace AffdexMe
// Face Points are off by default // Face Points are off by default
mShowFacePoints = false; mShowFacePoints = false;
mShowMeasurements = false;
// Show the logo // Show the logo
imgAffdexLogoDisplay.Visibility = Visibility.Visible; imgAffdexLogoDisplay.Visibility = Visibility.Visible;
@ -555,6 +620,44 @@ namespace AffdexMe
} }
} }
void btnShowMeasurements_Click(object sender, RoutedEventArgs e)
{
try
{
Style style;
String buttonText = String.Empty;
mShowMeasurements = !mShowMeasurements;
if (mShowMeasurements)
{
style = this.FindResource("PointsOnButtonStyle") as Style;
buttonText = "Hide Measurements";
interocularDistanceDisplay.Visibility = Visibility.Visible;
pitchDisplay.Visibility = Visibility.Visible;
yawDisplay.Visibility = Visibility.Visible;
rollDisplay.Visibility = Visibility.Visible;
}
else
{
style = this.FindResource("CustomButtonStyle") as Style;
buttonText = "Show Measurements";
interocularDistanceDisplay.Visibility = Visibility.Hidden;
pitchDisplay.Visibility = Visibility.Hidden;
yawDisplay.Visibility = Visibility.Hidden;
rollDisplay.Visibility = Visibility.Hidden;
}
btnShowMeasurements.Style = style;
btnShowMeasurements.Content = buttonText;
}
catch (Exception ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
}
private void btnResetCamera_Click(object sender, RoutedEventArgs e) private void btnResetCamera_Click(object sender, RoutedEventArgs e)
{ {
ResetCameraProcessing(); ResetCameraProcessing();
@ -581,9 +684,18 @@ namespace AffdexMe
void btnExit_Click(object sender, RoutedEventArgs e) void btnExit_Click(object sender, RoutedEventArgs e)
{ {
SaveSettings();
Application.Current.Shutdown(); Application.Current.Shutdown();
} }
void SaveSettings()
{
AffdexMe.Settings.Default.ShowPoints = mShowFacePoints;
AffdexMe.Settings.Default.ShowMeasurements = mShowMeasurements;
AffdexMe.Settings.Default.Classifiers = mEnabledClassifiers;
AffdexMe.Settings.Default.Save();
}
private void ClearClassifiersAndPointsDisplay() private void ClearClassifiersAndPointsDisplay()
{ {
// Hide AffdexFace Image // Hide AffdexFace Image
@ -591,6 +703,12 @@ namespace AffdexMe
stackPanelLogoBackground.Visibility = stackPanelLogoBackground.Visibility =
stackPanelClassifiersBackground.Visibility = Visibility.Hidden; stackPanelClassifiersBackground.Visibility = Visibility.Hidden;
//Clean measurements
interocularDistanceDisplay.Text = String.Format("Interocular Distance: {0}", 0);
pitchDisplay.Text = String.Format("Pitch Angle: {0}", 0);
yawDisplay.Text = String.Format("Yaw Angle: {0}", 0);
rollDisplay.Text = String.Format("Roll Angle: {0}", 0);
// Hide the Classifier Panel // Hide the Classifier Panel
stackPanelClassifiers.Visibility = Visibility.Hidden; stackPanelClassifiers.Visibility = Visibility.Hidden;
@ -614,21 +732,33 @@ namespace AffdexMe
} }
} }
private void TurnOnClassifiers()
{
mCameraDetector.setDetectAllEmotions(false);
mCameraDetector.setDetectAllExpressions(false);
foreach (String metric in mEnabledClassifiers)
{
MethodInfo setMethodInfo = mCameraDetector.GetType().GetMethod(String.Format("setDetect{0}", NameMappings(metric)));
setMethodInfo.Invoke(mCameraDetector, new object[] { true });
}
}
private void StartCameraProcessing() private void StartCameraProcessing()
{ {
try try
{ {
btnStartCamera.IsEnabled = false;
btnResetCamera.IsEnabled =
btnShowPoints.IsEnabled =
btnStopCamera.IsEnabled =
btnExit.IsEnabled = true;
// Instantiate CameraDetector using default camera ID // Instantiate CameraDetector using default camera ID
mCameraDetector = new Affdex.CameraDetector(); mCameraDetector = new Affdex.CameraDetector();
mCameraDetector.setClassifierPath(AFFDEX_DATA_PATH); mCameraDetector.setClassifierPath(GetClassifierDataFolder());
// Set the Classifiers that we are interested in tracking // Set the Classifiers that we are interested in tracking
mCameraDetector.setDetectSmile(true); TurnOnClassifiers();
mCameraDetector.setDetectBrowFurrow(true);
mCameraDetector.setDetectBrowRaise(true);
mCameraDetector.setDetectLipCornerDepressor(true);
mCameraDetector.setDetectEngagement(true);
mCameraDetector.setDetectValence(true);
// Initialize Classifier cache // Initialize Classifier cache
for (int index = 0; index < mAffdexClassifierValues.Count(); index++) for (int index = 0; index < mAffdexClassifierValues.Count(); index++)
@ -637,23 +767,13 @@ namespace AffdexMe
} }
mCachedSkipFaceResultsCount = 0; mCachedSkipFaceResultsCount = 0;
mCameraDetector.setImageListener(this);
mCameraDetector.setProcessStatusListener(this);
Listener listener = new Listener();
listener.ImageCaptureUpdate += imageListener_ImageCaptureUpdate;
listener.ImageResultsUpdate += imageListener_ImageResultsUpdate;
listener.ExceptionHandler += imageListener_ExceptionHandler;
mCameraDetector.setImageListener(listener);
mCameraDetector.setProcessStatusListener(listener);
btnStartCamera.IsEnabled = false;
btnResetCamera.IsEnabled =
btnShowPoints.IsEnabled =
btnStopCamera.IsEnabled =
btnExit.IsEnabled = true;
// Set the License Path // Set the License Path
mCameraDetector.setLicensePath(AFFDEX_LICENSE_FILE); mCameraDetector.setLicensePath(GetAffdexLicense());
mStartTime = DateTime.Now; mStartTime = DateTime.Now;
mCameraDetector.start(); mCameraDetector.start();
@ -690,24 +810,6 @@ namespace AffdexMe
} }
} }
void imageListener_ExceptionHandler(object sender, Affdex.AffdexException ex)
{
String message = String.IsNullOrEmpty(ex.Message) ? "AffdexMe error encountered." : ex.Message;
ShowExceptionAndShutDown(message);
}
void imageListener_ImageResultsUpdate(object sender, MainWindow.ImageResultsDataUpdateArgs e)
{
UpdateClassifierPanel(e.Face);
DisplayFeaturePoints(e.Image, e.Face);
}
void imageListener_ImageCaptureUpdate(object sender, MainWindow.ImageCaptureDataUpdateArgs e)
{
UpdateClassifierPanel();
DisplayImageToOffscreenCanvas(e.Image);
}
private void ResetCameraProcessing() private void ResetCameraProcessing()
{ {
try try
@ -748,8 +850,28 @@ namespace AffdexMe
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{ {
StopCameraProcessing(); StopCameraProcessing();
SaveSettings();
Application.Current.Shutdown(); Application.Current.Shutdown();
} }
private void btnChooseWin_Click(object sender, RoutedEventArgs e)
{
Boolean wasRunning = false;
if ((mCameraDetector != null) && (mCameraDetector.isRunning()))
{
StopCameraProcessing();
ResetDisplayArea();
wasRunning = true;
}
MetricSelectionUI w = new MetricSelectionUI(mEnabledClassifiers);
w.ShowDialog();
mEnabledClassifiers = w.Classifiers;
if (wasRunning)
{
StartCameraProcessing();
}
}
} }
} }

View file

@ -0,0 +1,312 @@
<Window x:Class="AffdexMe.MetricSelectionUI"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:affdexMe="clr-namespace:AffdexMe"
xmlns:gif="http://wpfanimatedgif.codeplex.com"
Title="Select Emotions or Expressions"
Height="640" Width="514" ResizeMode="NoResize" Closing="Window_Closing">
<Grid>
<ScrollViewer Margin="0,0,0,45">
<Grid Name="theGrid" Background="Black">
<Grid.Resources>
<affdexMe:UpperCaseConverter x:Key="StringToUpper" />
<affdexMe:NameToResourceConverter x:Key="ResourceFileName" />
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="160" />
<ColumnDefinition Width="160" />
<ColumnDefinition Width="160" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="50" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
<RowDefinition Height="178" />
</Grid.RowDefinitions>
<Border Background="Coral" Grid.Row="0" Grid.Column="0" Margin="1,0,0,2">
<StackPanel Orientation="Vertical" Grid.Row="0" Grid.Column="0" Margin="10,10,0,10">
<TextBlock Text="Emotions" Foreground="Black" FontWeight="Bold" FontSize="12" HorizontalAlignment="Left"/>
</StackPanel>
</Border>
<Border Background="Coral" Grid.Row="0" Grid.Column="1" Margin="0,0,0,2" />
<Border Background="Coral" Grid.Row="0" Grid.Column="2" Margin="0,0,0,2" />
<StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="0" Margin="1,1,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Anger" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Disgust" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x"/>
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Fear" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x"/>
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="2" Grid.Column="0" Margin="1,1,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Joy" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="2" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Sadness" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="2" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Surprise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="3" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Contempt" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="3" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Valence" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="3" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Engagement" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<Border Background="Coral" Grid.Row="4" Grid.Column="0" Margin="1,2,0,2">
<StackPanel Orientation="Vertical" Grid.Row="4" Grid.Column="0" Margin="10,15,0,10">
<TextBlock Text="Expressions" Foreground="Black" FontWeight="Bold" FontSize="12" HorizontalAlignment="Left"/>
</StackPanel>
</Border>
<Border Background="Coral" Grid.Row="4" Grid.Column="1" Margin="0,2,0,2"/>
<Border Background="Coral" Grid.Row="4" Grid.Column="2" Margin="0,2,0,2"/>
<StackPanel Orientation="Vertical" Grid.Row="5" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Attention" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="5" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="BrowFurrow" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="5" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="BrowRaise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="6" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="ChinRaise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="6" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="EyeClosure" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="6" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="InnerBrowRaise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="7" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Frown" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="7" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="LipPress" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="7" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="LipPucker" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="8" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="LipSuck" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="8" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="MouthOpen" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="8" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="NoseWrinkle" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="9" Grid.Column="0" Margin="1,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Smile" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="9" Grid.Column="1" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="Smirk" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="9" Grid.Column="2" Margin="0,0,1,0">
<Border BorderThickness="5" BorderBrush="White" Background="Transparent" CornerRadius="0" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="UpperLipRaise" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseDown="StackPanel_MouseDown" MouseUp="StackPanel_MouseLeave">
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource StringToUpper} }" Foreground="White" FontWeight="Bold" FontSize="12" HorizontalAlignment="Center"/>
<Image Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=Name, Converter={StaticResource ResourceFileName}, ConverterParameter=jpg }" gif:ImageBehavior.AutoStart="False" gif:ImageBehavior.RepeatBehavior="1x" />
</StackPanel>
</Border>
</StackPanel>
</Grid>
</ScrollViewer >
<DockPanel VerticalAlignment="Bottom" Background="Coral" >
<GroupBox Margin="0,5,0,0" Height="40" VerticalAlignment="Stretch" BorderBrush="Transparent" BorderThickness="0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type ButtonBase}" x:Key="CustomButtonStyle">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF2778BB" Offset="0.51"/>
<GradientStop Color="#FF2683C5" Offset="0.484"/>
<GradientStop Color="#FF8CD4FF" Offset="1"/>
<GradientStop Color="#FF1973AE" Offset="0.497"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="BorderBrush" Value="#FF2B5F91"/>
<Setter Property="Margin" Value="1"/>
<Setter Property="Height" Value="30"/>
<Setter Property="MinWidth" Value="20"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Rectangle Stroke="{TemplateBinding BorderBrush}" RadiusX="15" RadiusY="15" Fill="{TemplateBinding Background}"/>
<Rectangle VerticalAlignment="Top" Height="10" Margin="7,2,7,1" RadiusX="10" RadiusY="10">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#11FFFFFF" Offset="1"/>
<GradientStop Color="#B2FFFFFF" Offset="0"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="rectangle" RadiusX="15" RadiusY="15" Fill="White" Margin="1" Opacity="0"/>
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center" IsHitTestVisible="False" Margin="{TemplateBinding Padding}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.2"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Opacity" TargetName="rectangle" Value="0.3"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Fill" TargetName="rectangle" Value="#666"/>
<Setter Property="Opacity" TargetName="rectangle" Value="0.6"/>
<Setter Property="Opacity" TargetName="contentPresenter" Value="0.3"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="340" />
<ColumnDefinition Width="80" />
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Name="btnClearAll" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Top" Width="65" Content="Clear all" Click="btnClearAll_Click" />
<TextBlock Name="txtBlkInfo" Grid.Row="0" Grid.Column="1" Text="Please select 6 Emotions or Expressions to track." Foreground="White" FontWeight="Bold" FontSize="12" Margin="0,6,0,0" HorizontalAlignment="Center"/>
<Button Grid.Row="0" Grid.Column="2" Name="btnOK" Style="{StaticResource CustomButtonStyle}" HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Top" Width="65" Content="OK" Click="btnOK_Click" />
</Grid>
</StackPanel>
</GroupBox>
</DockPanel>
</Grid>
</Window>

View file

@ -0,0 +1,200 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using WpfAnimatedGif;
namespace AffdexMe
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class MetricSelectionUI : Window
{
const String SELECTMSG = "Please select 6 Emotions or Expressions to track.";
const String ACTIVEMSG = "{0} Metrics chosen, please select {1} more.";
const String DONEMSG = "{0} Metrics chosen.";
const String DESELECTMSG = "Reached max number of metrics selected.";
public MetricSelectionUI(StringCollection enabled_classifiers)
{
InitializeComponent();
CenterWindowOnScreen();
Classifiers = enabled_classifiers;
foreach (String classifier in enabled_classifiers)
{
Border border = getBorder(classifier);
border.BorderBrush = Brushes.Green;
}
}
private void CenterWindowOnScreen()
{
double screenWidth = System.Windows.SystemParameters.PrimaryScreenWidth;
double screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight;
double windowWidth = this.Width;
double windowHeight = this.Height;
this.Left = (screenWidth / 2) - (windowWidth / 2);
this.Top = (screenHeight / 2) - (windowHeight / 2);
}
private void StackPanel_MouseEnter(object sender, MouseEventArgs e)
{
Border border = (Border)((StackPanel)sender).Parent;
if (!isStackPanelSelected(border))
border.BorderBrush = Brushes.Coral;
var image = ((StackPanel)sender).Children.OfType<Image>().FirstOrDefault();
NameToResourceConverter conv = new NameToResourceConverter();
var gifUri = conv.Convert(((StackPanel)sender).Name, null, "gif", null);
var img = new BitmapImage();
img.BeginInit();
img.UriSource = (Uri) gifUri;
img.EndInit();
ImageBehavior.SetAnimatedSource(image, img);
playGif(image);
}
private void StackPanel_MouseLeave(object sender, MouseEventArgs e)
{
Border border = (Border)((StackPanel)sender).Parent;
var image = ((StackPanel)sender).Children.OfType<Image>().FirstOrDefault();
NameToResourceConverter conv = new NameToResourceConverter();
stopGif(image);
var img = new BitmapImage();
img.BeginInit();
img.UriSource = (Uri)conv.Convert(((StackPanel)sender).Name, null, "jpg", null);
img.EndInit();
ImageBehavior.SetAnimatedSource(image, img);
if (!isStackPanelSelected(border))
border.BorderBrush = Brushes.White;
int classifersCount = Classifiers.Count;
if (classifersCount == 6) txtBlkInfo.Text = String.Format(DONEMSG, classifersCount);
else txtBlkInfo.Text = String.Format(ACTIVEMSG, classifersCount, 6 - classifersCount);
}
private void stopGif(Image image)
{
var control = ImageBehavior.GetAnimationController(image);
if (control != null)
{
control.Pause();
control.GotoFrame(control.FrameCount - 1);
}
}
private void playGif(Image image)
{
var control = ImageBehavior.GetAnimationController(image);
control.GotoFrame(0);
control.Play();
}
private void StackPanel_MouseDown(object sender, MouseButtonEventArgs e)
{
Border border = (Border)((StackPanel)sender).Parent;
if (isStackPanelSelected(border))
{
border.BorderBrush = Brushes.White;
Classifiers.Remove(((StackPanel)sender).Name);
}
else {
int classifersCount = Classifiers.Count;
if ( classifersCount < 6)
{
border.BorderBrush = Brushes.Green;
Classifiers.Add(((StackPanel)sender).Name);
if (classifersCount + 1 == 6) txtBlkInfo.Text = String.Format(DONEMSG, classifersCount + 1);
else txtBlkInfo.Text = String.Format(ACTIVEMSG, classifersCount+1, 6 - classifersCount);
}
else
{
border.BorderBrush = Brushes.Red;
txtBlkInfo.Text = DESELECTMSG;
}
}
}
private Border getBorder(String name)
{
Border border = null;
foreach (StackPanel panel in theGrid.Children.OfType<StackPanel>())
{
var tempBorder = panel.Children.OfType<Border>().FirstOrDefault();
var stackPanel = (StackPanel)tempBorder.Child;
if (stackPanel.Name == name) border = tempBorder;
}
return border;
}
private bool isStackPanelSelected(Border border)
{
return (border.BorderBrush == Brushes.Green);
}
public StringCollection Classifiers {get;set;}
public String ActiveClassifierList
{
get
{
String classifiers = "";
foreach(String key in Classifiers)
classifiers += String.Format("{0},", key);
return String.Format("{0} active classifiers: {1}", Classifiers.Count, classifiers);
}
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
int selectedClassifiersCount = Classifiers.Count;
if ( selectedClassifiersCount < 6)
{
int missing = 6 - selectedClassifiersCount;
List<StackPanel> panels = theGrid.Children.OfType<StackPanel>().ToList();
int index = 0;
while (selectedClassifiersCount < 6)
{
var tempBorder = panels[index].Children.OfType<Border>().FirstOrDefault();
var stackPanel = (StackPanel)tempBorder.Child;
Classifiers.Add(stackPanel.Name);
index++;
selectedClassifiersCount++;
}
}
}
private void btnClearAll_Click(object sender, RoutedEventArgs e)
{
foreach (String classifier in Classifiers)
{
Border border = getBorder(classifier);
border.BorderBrush = Brushes.White;
txtBlkInfo.Text = SELECTMSG;
}
Classifiers.Clear();
}
private void btnOK_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}

View file

@ -0,0 +1,41 @@
using AffdexMe.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
namespace AffdexMe
{
public class NameToResourceConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
String classifier_name = SplitCamelCase(((String)value));
classifier_name = classifier_name.ToLower().Replace(" ", "_");
return new Uri("pack://application:,,,/" + classifier_name + "." +((String) parameter));
//return new Uri(String.Format("pack://application:,,,/{0}.jpg", ((String)value).ToLower()));
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
public string SplitCamelCase(String str)
{
return Regex.Replace(
Regex.Replace(
str,
@"(\P{Ll})(\P{Ll}\p{Ll})",
"$1 $2"
),
@"(\p{Ll})(\P{Ll})",
"$1 $2"
);
}
}
}

View file

@ -1,30 +1,70 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // This code was generated by a tool.
// Runtime Version:4.0.30319.34209 // Runtime Version:4.0.30319.18444
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace AffdexMe.Properties namespace AffdexMe {
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default public static Settings Default {
{ get {
get
{
return defaultInstance; return defaultInstance;
} }
} }
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute(@"<?xml version=""1.0"" encoding=""utf-16""?>
<ArrayOfString xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<string>Joy</string>
<string>Sadness</string>
<string>Anger</string>
<string>Disgust</string>
<string>Surprise</string>
<string>Fear</string>
</ArrayOfString>")]
public global::System.Collections.Specialized.StringCollection Classifiers {
get {
return ((global::System.Collections.Specialized.StringCollection)(this["Classifiers"]));
}
set {
this["Classifiers"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ShowPoints {
get {
return ((bool)(this["ShowPoints"]));
}
set {
this["ShowPoints"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool ShowMeasurements {
get {
return ((bool)(this["ShowMeasurements"]));
}
set {
this["ShowMeasurements"] = value;
}
}
} }
} }

View file

@ -1,7 +1,23 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="AffdexMe" GeneratedClassName="Settings">
<Profiles> <Profiles />
<Profile Name="(Default)" /> <Settings>
</Profiles> <Setting Name="Classifiers" Type="System.Collections.Specialized.StringCollection" Scope="User">
<Settings /> <Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
&lt;string&gt;Joy&lt;/string&gt;
&lt;string&gt;Sadness&lt;/string&gt;
&lt;string&gt;Anger&lt;/string&gt;
&lt;string&gt;Disgust&lt;/string&gt;
&lt;string&gt;Surprise&lt;/string&gt;
&lt;string&gt;Fear&lt;/string&gt;
&lt;/ArrayOfString&gt;</Value>
</Setting>
<Setting Name="ShowPoints" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="ShowMeasurements" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile> </SettingsFile>

View file

@ -18,7 +18,7 @@ This application runs on Windows 7.0, 8.0 and 8.1
* Visual Studio 2013 * Visual Studio 2013
* To download and install the Windows SDK from Affectiva By default, the Windows SDK is installed to the following location: C:\Program Files (x86)\Affectiva\Affdex SDK * To download and install the Windows SDK (32-bit) from Affectiva By default, the Windows SDK is installed to the following location: C:\Program Files (x86)\Affectiva\Affdex SDK
If you have installed the SDK to a location other than the default, you will have to modify the following String constants located in the MainWindow.xaml.cs file: If you have installed the SDK to a location other than the default, you will have to modify the following String constants located in the MainWindow.xaml.cs file:

View file

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace AffdexMe
{
public class UpperCaseConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return SplitCamelCase(((String)value)).ToUpper();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
public string SplitCamelCase(String str)
{
return Regex.Replace(
Regex.Replace(
str,
@"(\P{Ll})(\P{Ll}\p{Ll})",
"$1 $2"
),
@"(\p{Ll})(\P{Ll})",
"$1 $2"
);
}
}
}

BIN
AffdexMe/anger.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

BIN
AffdexMe/anger.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
AffdexMe/attention.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 KiB

BIN
AffdexMe/attention.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
AffdexMe/brow_furrow.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 KiB

BIN
AffdexMe/brow_furrow.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
AffdexMe/brow_raise.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 KiB

BIN
AffdexMe/brow_raise.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
AffdexMe/chin_raise.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 KiB

BIN
AffdexMe/chin_raise.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
AffdexMe/contempt.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 KiB

BIN
AffdexMe/contempt.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
AffdexMe/disgust.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
AffdexMe/disgust.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
AffdexMe/engagement.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
AffdexMe/engagement.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
AffdexMe/eye_closure.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

BIN
AffdexMe/eye_closure.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
AffdexMe/fear.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 KiB

BIN
AffdexMe/fear.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
AffdexMe/frown.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 KiB

BIN
AffdexMe/frown.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
AffdexMe/joy.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 KiB

BIN
AffdexMe/joy.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
AffdexMe/lip_press.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 KiB

BIN
AffdexMe/lip_press.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
AffdexMe/lip_pucker.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 KiB

BIN
AffdexMe/lip_pucker.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
AffdexMe/lip_suck.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 KiB

BIN
AffdexMe/lip_suck.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
AffdexMe/mouth_open.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

BIN
AffdexMe/mouth_open.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
AffdexMe/nose_wrinkle.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 KiB

BIN
AffdexMe/nose_wrinkle.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View file

@ -0,0 +1,13 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("affdex-native.dll")]

View file

@ -0,0 +1,13 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("affdex-native.dll")]

View file

@ -0,0 +1,2 @@


View file

@ -0,0 +1,62 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace XamlGeneratedNamespace {
/// <summary>
/// GeneratedInternalTypeHelper
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
/// <summary>
/// CreateInstance
/// </summary>
protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
| (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
}
/// <summary>
/// GetPropertyValue
/// </summary>
protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// SetPropertyValue
/// </summary>
protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// CreateDelegate
/// </summary>
protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
| (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
delegateType,
handler}, null)));
}
/// <summary>
/// AddEventHandler
/// </summary>
protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
eventInfo.AddEventHandler(target, handler);
}
}
}

View file

@ -0,0 +1,625 @@
#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "146FBE3BEDB0723D05EFF2A31C5BB33E"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
namespace AffdexMe {
/// <summary>
/// MainWindow
/// </summary>
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 123 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridMainDisplay;
#line default
#line hidden
#line 125 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridContentDisplay;
#line default
#line hidden
#line 128 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelImage;
#line default
#line hidden
#line 130 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridAffdexFaceDisplay;
#line default
#line hidden
#line 131 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexFaceDisplay;
#line default
#line hidden
#line 133 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexLogoDisplay;
#line default
#line hidden
#line 136 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Canvas canvasFacePoints;
#line default
#line hidden
#line 137 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock interocularDistanceDisplay;
#line default
#line hidden
#line 138 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock pitchDisplay;
#line default
#line hidden
#line 139 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock yawDisplay;
#line default
#line hidden
#line 140 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock rollDisplay;
#line default
#line hidden
#line 145 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelClassifiersBackground;
#line default
#line hidden
#line 148 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelClassifiers;
#line default
#line hidden
#line 150 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridClassifierDisplay;
#line default
#line hidden
#line 165 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel0;
#line default
#line hidden
#line 166 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0Name;
#line default
#line hidden
#line 168 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0ValueBackgroud;
#line default
#line hidden
#line 169 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0Value;
#line default
#line hidden
#line 173 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel1;
#line default
#line hidden
#line 174 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1Name;
#line default
#line hidden
#line 176 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1ValueBackgroud;
#line default
#line hidden
#line 177 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1Value;
#line default
#line hidden
#line 181 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel2;
#line default
#line hidden
#line 182 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2Name;
#line default
#line hidden
#line 184 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2ValueBackgroud;
#line default
#line hidden
#line 185 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2Value;
#line default
#line hidden
#line 189 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel3;
#line default
#line hidden
#line 190 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3Name;
#line default
#line hidden
#line 192 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3ValueBackgroud;
#line default
#line hidden
#line 193 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3Value;
#line default
#line hidden
#line 197 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel4;
#line default
#line hidden
#line 198 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4Name;
#line default
#line hidden
#line 200 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4ValueBackgroud;
#line default
#line hidden
#line 201 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4Value;
#line default
#line hidden
#line 205 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel5;
#line default
#line hidden
#line 206 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5Name;
#line default
#line hidden
#line 208 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5ValueBackgroud;
#line default
#line hidden
#line 209 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5Value;
#line default
#line hidden
#line 215 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelLogoBackground;
#line default
#line hidden
#line 216 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridLogoBackground;
#line default
#line hidden
#line 229 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexLogoBackground;
#line default
#line hidden
#line 241 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStartCamera;
#line default
#line hidden
#line 242 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnResetCamera;
#line default
#line hidden
#line 243 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnShowPoints;
#line default
#line hidden
#line 244 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnShowMeasurements;
#line default
#line hidden
#line 245 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnChooseWin;
#line default
#line hidden
#line 246 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStopCamera;
#line default
#line hidden
#line 247 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnExit;
#line default
#line hidden
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/AffdexMe;component/mainwindow.xaml", System.UriKind.Relative);
#line 1 "..\..\MainWindow.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
switch (connectionId)
{
case 1:
#line 9 "..\..\MainWindow.xaml"
((AffdexMe.MainWindow)(target)).Loaded += new System.Windows.RoutedEventHandler(this.Window_Loaded);
#line default
#line hidden
#line 10 "..\..\MainWindow.xaml"
((AffdexMe.MainWindow)(target)).Closing += new System.ComponentModel.CancelEventHandler(this.Window_Closing);
#line default
#line hidden
return;
case 2:
this.gridMainDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 3:
this.gridContentDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 4:
this.stackPanelImage = ((System.Windows.Controls.StackPanel)(target));
return;
case 5:
this.gridAffdexFaceDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 6:
this.imgAffdexFaceDisplay = ((System.Windows.Controls.Image)(target));
return;
case 7:
this.imgAffdexLogoDisplay = ((System.Windows.Controls.Image)(target));
return;
case 8:
this.canvasFacePoints = ((System.Windows.Controls.Canvas)(target));
return;
case 9:
this.interocularDistanceDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 10:
this.pitchDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 11:
this.yawDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 12:
this.rollDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 13:
this.stackPanelClassifiersBackground = ((System.Windows.Controls.StackPanel)(target));
return;
case 14:
this.stackPanelClassifiers = ((System.Windows.Controls.StackPanel)(target));
return;
case 15:
this.gridClassifierDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 16:
this.stackPanel0 = ((System.Windows.Controls.StackPanel)(target));
return;
case 17:
this.stackPanel0Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 18:
this.stackPanel0ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 19:
this.stackPanel0Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 20:
this.stackPanel1 = ((System.Windows.Controls.StackPanel)(target));
return;
case 21:
this.stackPanel1Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 22:
this.stackPanel1ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 23:
this.stackPanel1Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 24:
this.stackPanel2 = ((System.Windows.Controls.StackPanel)(target));
return;
case 25:
this.stackPanel2Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 26:
this.stackPanel2ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 27:
this.stackPanel2Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 28:
this.stackPanel3 = ((System.Windows.Controls.StackPanel)(target));
return;
case 29:
this.stackPanel3Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 30:
this.stackPanel3ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 31:
this.stackPanel3Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 32:
this.stackPanel4 = ((System.Windows.Controls.StackPanel)(target));
return;
case 33:
this.stackPanel4Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 34:
this.stackPanel4ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 35:
this.stackPanel4Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 36:
this.stackPanel5 = ((System.Windows.Controls.StackPanel)(target));
return;
case 37:
this.stackPanel5Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 38:
this.stackPanel5ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 39:
this.stackPanel5Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 40:
this.stackPanelLogoBackground = ((System.Windows.Controls.StackPanel)(target));
return;
case 41:
this.gridLogoBackground = ((System.Windows.Controls.Grid)(target));
return;
case 42:
this.imgAffdexLogoBackground = ((System.Windows.Controls.Image)(target));
return;
case 43:
this.btnStartCamera = ((System.Windows.Controls.Button)(target));
return;
case 44:
this.btnResetCamera = ((System.Windows.Controls.Button)(target));
return;
case 45:
this.btnShowPoints = ((System.Windows.Controls.Button)(target));
return;
case 46:
this.btnShowMeasurements = ((System.Windows.Controls.Button)(target));
return;
case 47:
this.btnChooseWin = ((System.Windows.Controls.Button)(target));
#line 245 "..\..\MainWindow.xaml"
this.btnChooseWin.Click += new System.Windows.RoutedEventHandler(this.btnChooseWin_Click);
#line default
#line hidden
return;
case 48:
this.btnStopCamera = ((System.Windows.Controls.Button)(target));
return;
case 49:
this.btnExit = ((System.Windows.Controls.Button)(target));
return;
}
this._contentLoaded = true;
}
}
}

View file

@ -0,0 +1,625 @@
#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "146FBE3BEDB0723D05EFF2A31C5BB33E"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
namespace AffdexMe {
/// <summary>
/// MainWindow
/// </summary>
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 123 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridMainDisplay;
#line default
#line hidden
#line 125 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridContentDisplay;
#line default
#line hidden
#line 128 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelImage;
#line default
#line hidden
#line 130 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridAffdexFaceDisplay;
#line default
#line hidden
#line 131 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexFaceDisplay;
#line default
#line hidden
#line 133 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexLogoDisplay;
#line default
#line hidden
#line 136 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Canvas canvasFacePoints;
#line default
#line hidden
#line 137 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock interocularDistanceDisplay;
#line default
#line hidden
#line 138 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock pitchDisplay;
#line default
#line hidden
#line 139 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock yawDisplay;
#line default
#line hidden
#line 140 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock rollDisplay;
#line default
#line hidden
#line 145 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelClassifiersBackground;
#line default
#line hidden
#line 148 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelClassifiers;
#line default
#line hidden
#line 150 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridClassifierDisplay;
#line default
#line hidden
#line 165 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel0;
#line default
#line hidden
#line 166 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0Name;
#line default
#line hidden
#line 168 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0ValueBackgroud;
#line default
#line hidden
#line 169 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel0Value;
#line default
#line hidden
#line 173 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel1;
#line default
#line hidden
#line 174 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1Name;
#line default
#line hidden
#line 176 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1ValueBackgroud;
#line default
#line hidden
#line 177 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel1Value;
#line default
#line hidden
#line 181 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel2;
#line default
#line hidden
#line 182 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2Name;
#line default
#line hidden
#line 184 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2ValueBackgroud;
#line default
#line hidden
#line 185 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel2Value;
#line default
#line hidden
#line 189 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel3;
#line default
#line hidden
#line 190 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3Name;
#line default
#line hidden
#line 192 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3ValueBackgroud;
#line default
#line hidden
#line 193 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel3Value;
#line default
#line hidden
#line 197 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel4;
#line default
#line hidden
#line 198 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4Name;
#line default
#line hidden
#line 200 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4ValueBackgroud;
#line default
#line hidden
#line 201 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel4Value;
#line default
#line hidden
#line 205 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanel5;
#line default
#line hidden
#line 206 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5Name;
#line default
#line hidden
#line 208 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5ValueBackgroud;
#line default
#line hidden
#line 209 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock stackPanel5Value;
#line default
#line hidden
#line 215 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel stackPanelLogoBackground;
#line default
#line hidden
#line 216 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid gridLogoBackground;
#line default
#line hidden
#line 229 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Image imgAffdexLogoBackground;
#line default
#line hidden
#line 241 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStartCamera;
#line default
#line hidden
#line 242 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnResetCamera;
#line default
#line hidden
#line 243 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnShowPoints;
#line default
#line hidden
#line 244 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnShowMeasurements;
#line default
#line hidden
#line 245 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnChooseWin;
#line default
#line hidden
#line 246 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnStopCamera;
#line default
#line hidden
#line 247 "..\..\MainWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnExit;
#line default
#line hidden
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/AffdexMe;component/mainwindow.xaml", System.UriKind.Relative);
#line 1 "..\..\MainWindow.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
switch (connectionId)
{
case 1:
#line 9 "..\..\MainWindow.xaml"
((AffdexMe.MainWindow)(target)).Loaded += new System.Windows.RoutedEventHandler(this.Window_Loaded);
#line default
#line hidden
#line 10 "..\..\MainWindow.xaml"
((AffdexMe.MainWindow)(target)).Closing += new System.ComponentModel.CancelEventHandler(this.Window_Closing);
#line default
#line hidden
return;
case 2:
this.gridMainDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 3:
this.gridContentDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 4:
this.stackPanelImage = ((System.Windows.Controls.StackPanel)(target));
return;
case 5:
this.gridAffdexFaceDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 6:
this.imgAffdexFaceDisplay = ((System.Windows.Controls.Image)(target));
return;
case 7:
this.imgAffdexLogoDisplay = ((System.Windows.Controls.Image)(target));
return;
case 8:
this.canvasFacePoints = ((System.Windows.Controls.Canvas)(target));
return;
case 9:
this.interocularDistanceDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 10:
this.pitchDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 11:
this.yawDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 12:
this.rollDisplay = ((System.Windows.Controls.TextBlock)(target));
return;
case 13:
this.stackPanelClassifiersBackground = ((System.Windows.Controls.StackPanel)(target));
return;
case 14:
this.stackPanelClassifiers = ((System.Windows.Controls.StackPanel)(target));
return;
case 15:
this.gridClassifierDisplay = ((System.Windows.Controls.Grid)(target));
return;
case 16:
this.stackPanel0 = ((System.Windows.Controls.StackPanel)(target));
return;
case 17:
this.stackPanel0Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 18:
this.stackPanel0ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 19:
this.stackPanel0Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 20:
this.stackPanel1 = ((System.Windows.Controls.StackPanel)(target));
return;
case 21:
this.stackPanel1Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 22:
this.stackPanel1ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 23:
this.stackPanel1Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 24:
this.stackPanel2 = ((System.Windows.Controls.StackPanel)(target));
return;
case 25:
this.stackPanel2Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 26:
this.stackPanel2ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 27:
this.stackPanel2Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 28:
this.stackPanel3 = ((System.Windows.Controls.StackPanel)(target));
return;
case 29:
this.stackPanel3Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 30:
this.stackPanel3ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 31:
this.stackPanel3Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 32:
this.stackPanel4 = ((System.Windows.Controls.StackPanel)(target));
return;
case 33:
this.stackPanel4Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 34:
this.stackPanel4ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 35:
this.stackPanel4Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 36:
this.stackPanel5 = ((System.Windows.Controls.StackPanel)(target));
return;
case 37:
this.stackPanel5Name = ((System.Windows.Controls.TextBlock)(target));
return;
case 38:
this.stackPanel5ValueBackgroud = ((System.Windows.Controls.TextBlock)(target));
return;
case 39:
this.stackPanel5Value = ((System.Windows.Controls.TextBlock)(target));
return;
case 40:
this.stackPanelLogoBackground = ((System.Windows.Controls.StackPanel)(target));
return;
case 41:
this.gridLogoBackground = ((System.Windows.Controls.Grid)(target));
return;
case 42:
this.imgAffdexLogoBackground = ((System.Windows.Controls.Image)(target));
return;
case 43:
this.btnStartCamera = ((System.Windows.Controls.Button)(target));
return;
case 44:
this.btnResetCamera = ((System.Windows.Controls.Button)(target));
return;
case 45:
this.btnShowPoints = ((System.Windows.Controls.Button)(target));
return;
case 46:
this.btnShowMeasurements = ((System.Windows.Controls.Button)(target));
return;
case 47:
this.btnChooseWin = ((System.Windows.Controls.Button)(target));
#line 245 "..\..\MainWindow.xaml"
this.btnChooseWin.Click += new System.Windows.RoutedEventHandler(this.btnChooseWin_Click);
#line default
#line hidden
return;
case 48:
this.btnStopCamera = ((System.Windows.Controls.Button)(target));
return;
case 49:
this.btnExit = ((System.Windows.Controls.Button)(target));
return;
}
this._contentLoaded = true;
}
}
}

View file

@ -0,0 +1,983 @@
#pragma checksum "..\..\MetricSelectionUI.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "868313CECF2DE99BFAB8BDBC832BB827"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using AffdexMe;
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
using WpfAnimatedGif;
namespace AffdexMe {
/// <summary>
/// MetricSelectionUI
/// </summary>
public partial class MetricSelectionUI : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 10 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid theGrid;
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Anger;
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Disgust;
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Fear;
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Joy;
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Sadness;
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Surprise;
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Contempt;
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Valence;
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Engagement;
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Attention;
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel BrowFurrow;
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel BrowRaise;
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel ChinRaise;
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel EyeClosure;
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel InnerBrowRaise;
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Frown;
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipPress;
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipPucker;
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipSuck;
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel MouthOpen;
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel NoseWrinkle;
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Smile;
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Smirk;
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel UpperLipRaise;
#line default
#line hidden
#line 304 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnClearAll;
#line default
#line hidden
#line 305 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtBlkInfo;
#line default
#line hidden
#line 306 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnOK;
#line default
#line hidden
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/AffdexMe;component/metricselectionui.xaml", System.UriKind.Relative);
#line 1 "..\..\MetricSelectionUI.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
switch (connectionId)
{
case 1:
#line 7 "..\..\MetricSelectionUI.xaml"
((AffdexMe.MetricSelectionUI)(target)).Closing += new System.ComponentModel.CancelEventHandler(this.Window_Closing);
#line default
#line hidden
return;
case 2:
this.theGrid = ((System.Windows.Controls.Grid)(target));
return;
case 3:
this.Anger = ((System.Windows.Controls.StackPanel)(target));
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 4:
this.Disgust = ((System.Windows.Controls.StackPanel)(target));
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 5:
this.Fear = ((System.Windows.Controls.StackPanel)(target));
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 6:
this.Joy = ((System.Windows.Controls.StackPanel)(target));
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 7:
this.Sadness = ((System.Windows.Controls.StackPanel)(target));
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 8:
this.Surprise = ((System.Windows.Controls.StackPanel)(target));
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 9:
this.Contempt = ((System.Windows.Controls.StackPanel)(target));
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 10:
this.Valence = ((System.Windows.Controls.StackPanel)(target));
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 11:
this.Engagement = ((System.Windows.Controls.StackPanel)(target));
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 12:
this.Attention = ((System.Windows.Controls.StackPanel)(target));
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 13:
this.BrowFurrow = ((System.Windows.Controls.StackPanel)(target));
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 14:
this.BrowRaise = ((System.Windows.Controls.StackPanel)(target));
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 15:
this.ChinRaise = ((System.Windows.Controls.StackPanel)(target));
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 16:
this.EyeClosure = ((System.Windows.Controls.StackPanel)(target));
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 17:
this.InnerBrowRaise = ((System.Windows.Controls.StackPanel)(target));
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 18:
this.Frown = ((System.Windows.Controls.StackPanel)(target));
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 19:
this.LipPress = ((System.Windows.Controls.StackPanel)(target));
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 20:
this.LipPucker = ((System.Windows.Controls.StackPanel)(target));
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 21:
this.LipSuck = ((System.Windows.Controls.StackPanel)(target));
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 22:
this.MouthOpen = ((System.Windows.Controls.StackPanel)(target));
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 23:
this.NoseWrinkle = ((System.Windows.Controls.StackPanel)(target));
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 24:
this.Smile = ((System.Windows.Controls.StackPanel)(target));
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 25:
this.Smirk = ((System.Windows.Controls.StackPanel)(target));
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 26:
this.UpperLipRaise = ((System.Windows.Controls.StackPanel)(target));
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 27:
this.btnClearAll = ((System.Windows.Controls.Button)(target));
#line 304 "..\..\MetricSelectionUI.xaml"
this.btnClearAll.Click += new System.Windows.RoutedEventHandler(this.btnClearAll_Click);
#line default
#line hidden
return;
case 28:
this.txtBlkInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 29:
this.btnOK = ((System.Windows.Controls.Button)(target));
#line 306 "..\..\MetricSelectionUI.xaml"
this.btnOK.Click += new System.Windows.RoutedEventHandler(this.btnOK_Click);
#line default
#line hidden
return;
}
this._contentLoaded = true;
}
}
}

View file

@ -0,0 +1,983 @@
#pragma checksum "..\..\MetricSelectionUI.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "868313CECF2DE99BFAB8BDBC832BB827"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using AffdexMe;
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Automation;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Effects;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Media.TextFormatting;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Shell;
using WpfAnimatedGif;
namespace AffdexMe {
/// <summary>
/// MetricSelectionUI
/// </summary>
public partial class MetricSelectionUI : System.Windows.Window, System.Windows.Markup.IComponentConnector {
#line 10 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Grid theGrid;
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Anger;
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Disgust;
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Fear;
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Joy;
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Sadness;
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Surprise;
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Contempt;
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Valence;
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Engagement;
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Attention;
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel BrowFurrow;
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel BrowRaise;
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel ChinRaise;
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel EyeClosure;
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel InnerBrowRaise;
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Frown;
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipPress;
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipPucker;
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel LipSuck;
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel MouthOpen;
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel NoseWrinkle;
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Smile;
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel Smirk;
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.StackPanel UpperLipRaise;
#line default
#line hidden
#line 304 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnClearAll;
#line default
#line hidden
#line 305 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtBlkInfo;
#line default
#line hidden
#line 306 "..\..\MetricSelectionUI.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button btnOK;
#line default
#line hidden
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/AffdexMe;component/metricselectionui.xaml", System.UriKind.Relative);
#line 1 "..\..\MetricSelectionUI.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
switch (connectionId)
{
case 1:
#line 7 "..\..\MetricSelectionUI.xaml"
((AffdexMe.MetricSelectionUI)(target)).Closing += new System.ComponentModel.CancelEventHandler(this.Window_Closing);
#line default
#line hidden
return;
case 2:
this.theGrid = ((System.Windows.Controls.Grid)(target));
return;
case 3:
this.Anger = ((System.Windows.Controls.StackPanel)(target));
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 42 "..\..\MetricSelectionUI.xaml"
this.Anger.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 4:
this.Disgust = ((System.Windows.Controls.StackPanel)(target));
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 50 "..\..\MetricSelectionUI.xaml"
this.Disgust.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 5:
this.Fear = ((System.Windows.Controls.StackPanel)(target));
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 58 "..\..\MetricSelectionUI.xaml"
this.Fear.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 6:
this.Joy = ((System.Windows.Controls.StackPanel)(target));
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 66 "..\..\MetricSelectionUI.xaml"
this.Joy.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 7:
this.Sadness = ((System.Windows.Controls.StackPanel)(target));
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 74 "..\..\MetricSelectionUI.xaml"
this.Sadness.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 8:
this.Surprise = ((System.Windows.Controls.StackPanel)(target));
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 82 "..\..\MetricSelectionUI.xaml"
this.Surprise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 9:
this.Contempt = ((System.Windows.Controls.StackPanel)(target));
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 90 "..\..\MetricSelectionUI.xaml"
this.Contempt.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 10:
this.Valence = ((System.Windows.Controls.StackPanel)(target));
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 98 "..\..\MetricSelectionUI.xaml"
this.Valence.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 11:
this.Engagement = ((System.Windows.Controls.StackPanel)(target));
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 106 "..\..\MetricSelectionUI.xaml"
this.Engagement.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 12:
this.Attention = ((System.Windows.Controls.StackPanel)(target));
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 121 "..\..\MetricSelectionUI.xaml"
this.Attention.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 13:
this.BrowFurrow = ((System.Windows.Controls.StackPanel)(target));
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 129 "..\..\MetricSelectionUI.xaml"
this.BrowFurrow.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 14:
this.BrowRaise = ((System.Windows.Controls.StackPanel)(target));
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 137 "..\..\MetricSelectionUI.xaml"
this.BrowRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 15:
this.ChinRaise = ((System.Windows.Controls.StackPanel)(target));
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 145 "..\..\MetricSelectionUI.xaml"
this.ChinRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 16:
this.EyeClosure = ((System.Windows.Controls.StackPanel)(target));
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 153 "..\..\MetricSelectionUI.xaml"
this.EyeClosure.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 17:
this.InnerBrowRaise = ((System.Windows.Controls.StackPanel)(target));
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 161 "..\..\MetricSelectionUI.xaml"
this.InnerBrowRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 18:
this.Frown = ((System.Windows.Controls.StackPanel)(target));
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 169 "..\..\MetricSelectionUI.xaml"
this.Frown.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 19:
this.LipPress = ((System.Windows.Controls.StackPanel)(target));
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 177 "..\..\MetricSelectionUI.xaml"
this.LipPress.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 20:
this.LipPucker = ((System.Windows.Controls.StackPanel)(target));
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 185 "..\..\MetricSelectionUI.xaml"
this.LipPucker.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 21:
this.LipSuck = ((System.Windows.Controls.StackPanel)(target));
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 193 "..\..\MetricSelectionUI.xaml"
this.LipSuck.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 22:
this.MouthOpen = ((System.Windows.Controls.StackPanel)(target));
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 201 "..\..\MetricSelectionUI.xaml"
this.MouthOpen.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 23:
this.NoseWrinkle = ((System.Windows.Controls.StackPanel)(target));
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 209 "..\..\MetricSelectionUI.xaml"
this.NoseWrinkle.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 24:
this.Smile = ((System.Windows.Controls.StackPanel)(target));
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 217 "..\..\MetricSelectionUI.xaml"
this.Smile.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 25:
this.Smirk = ((System.Windows.Controls.StackPanel)(target));
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 225 "..\..\MetricSelectionUI.xaml"
this.Smirk.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 26:
this.UpperLipRaise = ((System.Windows.Controls.StackPanel)(target));
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseEnter += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseEnter);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseLeave += new System.Windows.Input.MouseEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseDown += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseDown);
#line default
#line hidden
#line 233 "..\..\MetricSelectionUI.xaml"
this.UpperLipRaise.MouseUp += new System.Windows.Input.MouseButtonEventHandler(this.StackPanel_MouseLeave);
#line default
#line hidden
return;
case 27:
this.btnClearAll = ((System.Windows.Controls.Button)(target));
#line 304 "..\..\MetricSelectionUI.xaml"
this.btnClearAll.Click += new System.Windows.RoutedEventHandler(this.btnClearAll_Click);
#line default
#line hidden
return;
case 28:
this.txtBlkInfo = ((System.Windows.Controls.TextBlock)(target));
return;
case 29:
this.btnOK = ((System.Windows.Controls.Button)(target));
#line 306 "..\..\MetricSelectionUI.xaml"
this.btnOK.Click += new System.Windows.RoutedEventHandler(this.btnOK_Click);
#line default
#line hidden
return;
}
this._contentLoaded = true;
}
}
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,214 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>WpfAnimatedGif</name>
</assembly>
<members>
<member name="T:WpfAnimatedGif.ImageAnimationController">
<summary>
Provides a way to pause, resume or seek a GIF animation.
</summary>
</member>
<member name="P:WpfAnimatedGif.ImageAnimationController.FrameCount">
<summary>
Returns the number of frames in the image.
</summary>
</member>
<member name="P:WpfAnimatedGif.ImageAnimationController.IsPaused">
<summary>
Returns a value that indicates whether the animation is paused.
</summary>
</member>
<member name="P:WpfAnimatedGif.ImageAnimationController.IsComplete">
<summary>
Returns a value that indicates whether the animation is complete.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.GotoFrame(System.Int32)">
<summary>
Seeks the animation to the specified frame index.
</summary>
<param name="index">The index of the frame to seek to</param>
</member>
<member name="P:WpfAnimatedGif.ImageAnimationController.CurrentFrame">
<summary>
Returns the current frame index.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Pause">
<summary>
Pauses the animation.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Play">
<summary>
Starts or resumes the animation. If the animation is complete, it restarts from the beginning.
</summary>
</member>
<member name="E:WpfAnimatedGif.ImageAnimationController.CurrentFrameChanged">
<summary>
Raised when the current frame changes.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Finalize">
<summary>
Finalizes the current object.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Dispose">
<summary>
Disposes the current object.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageAnimationController.Dispose(System.Boolean)">
<summary>
Disposes the current object
</summary>
<param name="disposing">true to dispose both managed an unmanaged resources, false to dispose only managed resources</param>
</member>
<member name="T:WpfAnimatedGif.ImageBehavior">
<summary>
Provides attached properties that display animated GIFs in a standard Image control.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetAnimatedSource(System.Windows.Controls.Image)">
<summary>
Gets the value of the <c>AnimatedSource</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<returns>The currently displayed animated image.</returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.SetAnimatedSource(System.Windows.Controls.Image,System.Windows.Media.ImageSource)">
<summary>
Sets the value of the <c>AnimatedSource</c> attached property for the specified object.
</summary>
<param name="obj">The element on which to set the property value.</param>
<param name="value">The animated image to display.</param>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AnimatedSourceProperty">
<summary>
Identifies the <c>AnimatedSource</c> attached property.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetRepeatBehavior(System.Windows.Controls.Image)">
<summary>
Gets the value of the <c>RepeatBehavior</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<returns>The repeat behavior of the animated image.</returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.SetRepeatBehavior(System.Windows.Controls.Image,System.Windows.Media.Animation.RepeatBehavior)">
<summary>
Sets the value of the <c>RepeatBehavior</c> attached property for the specified object.
</summary>
<param name="obj">The element on which to set the property value.</param>
<param name="value">The repeat behavior of the animated image.</param>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.RepeatBehaviorProperty">
<summary>
Identifies the <c>RepeatBehavior</c> attached property.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetAnimateInDesignMode(System.Windows.DependencyObject)">
<summary>
Gets the value of the <c>AnimateInDesignMode</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<returns>true if GIF animations are shown in design mode; false otherwise.</returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.SetAnimateInDesignMode(System.Windows.DependencyObject,System.Boolean)">
<summary>
Sets the value of the <c>AnimateInDesignMode</c> attached property for the specified object.
</summary>
<param name="obj">The element on which to set the property value.</param>
<param name="value">true to show GIF animations in design mode; false otherwise.</param>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AnimateInDesignModeProperty">
<summary>
Identifies the <c>AnimateInDesignMode</c> attached property.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetAutoStart(System.Windows.Controls.Image)">
<summary>
Gets the value of the <c>AutoStart</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<returns>true if the animation should start immediately when loaded. Otherwise, false.</returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.SetAutoStart(System.Windows.Controls.Image,System.Boolean)">
<summary>
Sets the value of the <c>AutoStart</c> attached property for the specified object.
</summary>
<param name="obj">The element from which to read the property value.</param>
<param name="value">true if the animation should start immediately when loaded. Otherwise, false.</param>
<remarks>The default value is true.</remarks>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AutoStartProperty">
<summary>
Identifies the <c>AutoStart</c> attached property.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetAnimationController(System.Windows.Controls.Image)">
<summary>
Gets the animation controller for the specified <c>Image</c> control.
</summary>
<param name="imageControl"></param>
<returns></returns>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.GetIsAnimationLoaded(System.Windows.Controls.Image)">
<summary>
Gets the value of the <c>IsAnimationLoaded</c> attached property for the specified object.
</summary>
<param name="image">The element from which to read the property value.</param>
<returns>true if the animation is loaded. Otherwise, false.</returns>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.IsAnimationLoadedProperty">
<summary>
Identifies the <c>IsAnimationLoaded</c> attached property.
</summary>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AnimationLoadedEvent">
<summary>
Identifies the <c>AnimationLoaded</c> attached event.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.AddAnimationLoadedHandler(System.Windows.Controls.Image,System.Windows.RoutedEventHandler)">
<summary>
Adds a handler for the AnimationLoaded attached event.
</summary>
<param name="image">The UIElement that listens to this event.</param>
<param name="handler">The event handler to be added.</param>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.RemoveAnimationLoadedHandler(System.Windows.Controls.Image,System.Windows.RoutedEventHandler)">
<summary>
Removes a handler for the AnimationLoaded attached event.
</summary>
<param name="image">The UIElement that listens to this event.</param>
<param name="handler">The event handler to be removed.</param>
</member>
<member name="F:WpfAnimatedGif.ImageBehavior.AnimationCompletedEvent">
<summary>
Identifies the <c>AnimationCompleted</c> attached event.
</summary>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.AddAnimationCompletedHandler(System.Windows.Controls.Image,System.Windows.RoutedEventHandler)">
<summary>
Adds a handler for the AnimationCompleted attached event.
</summary>
<param name="d">The UIElement that listens to this event.</param>
<param name="handler">The event handler to be added.</param>
</member>
<member name="M:WpfAnimatedGif.ImageBehavior.RemoveAnimationCompletedHandler(System.Windows.Controls.Image,System.Windows.RoutedEventHandler)">
<summary>
Removes a handler for the AnimationCompleted attached event.
</summary>
<param name="d">The UIElement that listens to this event.</param>
<param name="handler">The event handler to be removed.</param>
</member>
<member name="F:WpfAnimatedGif.Properties.VersionInfo.VersionString">
<summary>
Single place to define version
</summary>
</member>
</members>
</doc>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
AffdexMe/sadness.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 KiB

BIN
AffdexMe/sadness.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
AffdexMe/smile.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 KiB

BIN
AffdexMe/smile.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
AffdexMe/smirk.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 KiB

BIN
AffdexMe/smirk.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
AffdexMe/surprise.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 KiB

BIN
AffdexMe/surprise.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
AffdexMe/valence.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
AffdexMe/valence.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View file

@ -1,12 +1,13 @@
#Sample Apps for Affdex SDK for Windows #Sample Apps for Affdex SDK for Windows
Welcome to our repository on GitHub! Here you will find example code to get you started with our Affdex SDK for Windows and begin emotion-enabling you own app! Welcome to our repository on GitHub! Here you will find example code to get you started with our Affdex SDK 2.0 for Windows and begin emotion-enabling you own app!
OpenCV-webcam-demo OpenCV-webcam-demo
------------------ ------------------
*Dependencies* *Dependencies*
- Affdex SDK 2.0 (32 bit)
- OpenCV for Windows 2.4.9: http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/ - OpenCV for Windows 2.4.9: http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/
- Visual Studio 2013 or higher - Visual Studio 2013 or higher

View file

@ -25,39 +25,72 @@ class PlottingImageListener : public ImageListener
public: public:
void onImageResults(std::map<FaceId,Face> faces, Frame image) { void onImageResults(std::map<FaceId,Face> faces, Frame image) {
const int spacing = 10;
const int left_margin = 30;
const int font = cv::FONT_HERSHEY_COMPLEX_SMALL;
float font_size = 0.5f;
cv::Scalar clr = cv::Scalar(0, 0, 255);
cv::Scalar header_clr = cv::Scalar(255, 0, 0);
shared_ptr<byte> imgdata = image.getBGRByteArray(); shared_ptr<byte> imgdata = image.getBGRByteArray();
cv::Mat img = cv::Mat(image.getHeight(), image.getWidth(), CV_8UC3, imgdata.get()); cv::Mat mImg = cv::Mat(image.getHeight(), image.getWidth(), CV_8UC3, imgdata.get());
for (int i = 0; i < faces.size(); i++)
for (unsigned int i = 0; i < faces.size(); i++)
{ {
Face f = faces[i]; Face f = faces[i];
float smile_score = f.getSmileScore(); VecFeaturePoint points = f.featurePoints;
int n = f.getFeaturePointCount(); for (auto& point : points) //Draw face feature points.
VecFeaturePoint points = f.getFeaturePoints();
for (auto& point : points ) //Draw face feature points.
{ {
cv::circle(img, cv::Point(point.x, point.y), 1.0f, cv::Scalar(0, 0, 255)); cv::circle(mImg, cv::Point(point.x, point.y), 1.0f, cv::Scalar(0, 0, 255));
} }
Orientation headAngles = f.measurements.orientation;
std::string strAngles = "Pitch: " + std::to_string(headAngles.pitch) +
" Yaw: " + std::to_string(headAngles.yaw) +
" Roll: " + std::to_string(headAngles.roll) +
" InterOcularDist: " + std::to_string(f.measurements.interocularDistance);
//Output the results of the different classifiers. //Output the results of the different classifiers.
cv::putText(img, "Smile: "+ std::to_string(f.getSmileScore()), cv::Point(30, 30), cv::FONT_HERSHEY_COMPLEX, 0.5f, cv::Scalar(0, 0, 255)); int padding = 10;
cv::putText(img, "BrowFurrow: " + std::to_string(f.getBrowFurrowScore()), cv::Point(30, 50), cv::FONT_HERSHEY_COMPLEX, 0.5f, cv::Scalar(0, 0, 255));
cv::putText(img, "BrowRaise: " + std::to_string(f.getBrowRaiseScore()), cv::Point(30, 70), cv::FONT_HERSHEY_COMPLEX, 0.5f, cv::Scalar(0, 0, 255));
cv::putText(img, "LipCornerDepressor: " + std::to_string(f.getLipCornerDepressorScore()), cv::Point(30, 90), cv::FONT_HERSHEY_COMPLEX, 0.5f, cv::Scalar(0, 0, 255));
cv::putText(img, "Engagement: " + std::to_string(f.getEngagementScore()), cv::Point(30, 110), cv::FONT_HERSHEY_COMPLEX, 0.5f, cv::Scalar(0, 0, 255));
cv::putText(img, "Valence: " + std::to_string(f.getValenceScore()), cv::Point(30, 130), cv::FONT_HERSHEY_COMPLEX, 0.5f, cv::Scalar(0, 0, 255));
std::vector<std::string> expressions{ "smile", "innerBrowRaise", "browRaise", "browFurrow", "noseWrinkle",
"upperLipRaise", "lipCornerDepressor", "chinRaise", "lipPucker", "lipPress",
"lipSuck", "mouthOpen", "smirk", "eyeClosure", "attention" };
//Calculate the processing framerate, output both the processing + capture framerate std::vector<std::string> emotions{ "joy", "fear", "disgust", "sadness", "anger", "surprise", "contempt", "valence", "engagement" };
if (process_last_timestamp >= 0.0f)
cv::putText(mImg, "MEASUREMENTS", cv::Point(left_margin, padding += spacing), font, font_size, header_clr);
cv::putText(mImg, strAngles, cv::Point(left_margin, padding += spacing), font, font_size, clr);
cv::putText(mImg, "EXPRESSIONS", cv::Point(left_margin, padding += (spacing * 2)), font, font_size, header_clr);
float * values = (float *)&f.expressions;
for (string expression : expressions)
{ {
process_fps = 1.0f / (image.getTimestamp() - process_last_timestamp); cv::putText(mImg, expression + ": " + std::to_string(int(*values)), cv::Point(left_margin, padding += spacing), font, font_size, clr);
cv::putText(img, "capture fps: " + std::to_string(capture_fps), cv::Point(img.cols - 200, 30), cv::FONT_HERSHEY_COMPLEX, 0.5f, cv::Scalar(0, 0, 255)); values++;
cv::putText(img, "process fps: " + std::to_string(process_fps), cv::Point(img.cols - 200, 50), cv::FONT_HERSHEY_COMPLEX, 0.5f, cv::Scalar(0, 0, 255));
} }
cv::putText(mImg, "EMOTIONS", cv::Point(left_margin, padding += (spacing * 2)), font, font_size, header_clr);
values = (float *)&f.emotions;
for (string emotion : emotions)
{
cv::putText(mImg, emotion + ": " + std::to_string(int(*values)), cv::Point(left_margin, padding += spacing), font, font_size, clr);
values++;
}
std::cerr << "Timestamp: " << image.getTimestamp()
<< "," << image.getWidth()
<< "x" << image.getHeight()
<< " cfps: " << capture_fps
<< " pnts: " << points.size() << endl;
process_last_timestamp = image.getTimestamp(); process_last_timestamp = image.getTimestamp();
} }
cv::imshow("analyze-image", img); cv::putText(mImg, "capture fps: " + std::to_string(int(capture_fps)), cv::Point(mImg.cols - 110, mImg.rows - left_margin - spacing), font, font_size, clr);
cv::imshow("analyze-image", mImg);
cv::waitKey(30); cv::waitKey(30);
}; };
@ -91,12 +124,8 @@ int main(int argsc, char ** argsv)
} }
//Initialize detectors //Initialize detectors
frameDetector.setDetectSmile(true); frameDetector.setDetectAllEmotions(true);
frameDetector.setDetectBrowFurrow(true); frameDetector.setDetectAllExpressions(true);
frameDetector.setDetectBrowRaise(true);
frameDetector.setDetectLipCornerDepressor(true);
frameDetector.setDetectEngagement(true);
frameDetector.setDetectValence(true);
frameDetector.setClassifierPath(AFFDEX_DATA_DIR); frameDetector.setClassifierPath(AFFDEX_DATA_DIR);
frameDetector.setLicensePath(AFFDEX_LICENSE_FILE); frameDetector.setLicensePath(AFFDEX_LICENSE_FILE);
frameDetector.setImageListener(listenPtr.get()); frameDetector.setImageListener(listenPtr.get());