// We want to control how depth data gets converted into false-color data // for more intuitive visualization, so we keep 32-bit color frame buffer versions of // these, to be updated whenever we receive and process a 16-bit frame. /*const int RED_IDX = 2; const int GREEN_IDX = 1; const int BLUE_IDX = 0; byte[] depthFrame32 = new byte[320 * 240 * 4];*/ public ExerciseView(Exercise ex) { InitializeComponent(); this.ex = ex; statusText.Text = ex.statusMessage; passSound = new SoundPlayer("Sounds/ExercisePass.wav"); passSound.LoadAsync(); failSound = new SoundPlayer("Sounds/ExerciseFail.wav"); failSound.LoadAsync(); #if DEBUG lastTime = DateTime.Now; fpsLabel = new Label(); fpsLabel.Content = "FPS:"; fpsLabel.FontSize = (double)Application.Current.Resources["SmallButtonFont"]; fpsLabel.HorizontalContentAlignment = HorizontalAlignment.Center; fpsLabel.HorizontalAlignment = HorizontalAlignment.Left; bottomPanel.Children.Insert(0, fpsLabel); #endif #if AUDIOUI SharedContent.Sr.registerSpeechCommand(SharedContent.Commands.Stop, selectedResponse); #endif //SharedContent.Nui.DepthFrameReady += new EventHandler<ImageFrameReadyEventArgs>(nuiDepthFrameReady); SharedContent.Nui.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>(nuiSkeletonFrameReady); SharedContent.Nui.VideoFrameReady += new EventHandler<ImageFrameReadyEventArgs>(nuiColorFrameReady); }
public static Exercise[] GetExercises() { shoulderAbduction = shoulderAbduction ?? ExerciseFactory.CreateRightShoulderAbductionExercise(); bicepCurl = bicepCurl ?? ExerciseFactory.CreateRightBicepCurlExercise(); return new Exercise[] { shoulderAbduction, bicepCurl }; }
public ExercisePreview(Exercise ex) { InitializeComponent(); this.ex = ex; #if AUDIOUI SharedContent.Sr.registerSpeechCommand(SharedContent.Commands.Play, selectedResponse); SharedContent.Sr.registerSpeechCommand(SharedContent.Commands.Pause, selectedResponse); SharedContent.Sr.registerSpeechCommand(SharedContent.Commands.Stop, selectedResponse); SharedContent.Sr.registerSpeechCommand(SharedContent.Commands.Continue, selectedResponse); #endif }
public ExerciseFeedback(Exercise ex) { InitializeComponent(); stepViewer.Height = (double)Application.Current.Resources["AppHeight"] - (double)Application.Current.Resources["BigButtonHeight"]; #if AUDIOUI SharedContent.Sr.registerSpeechCommand(SharedContent.Commands.Back, selectedResponse); SharedContent.Sr.registerSpeechCommand(SharedContent.Commands.Retry, selectedResponse); #endif this.ex = ex; ExerciseStep[] steps = ex.exerciseSteps; foreach (ExerciseStep step in steps) { Uri source; switch (step.stepStatus) { case ExerciseStepStatus.Complete: source = new Uri("Images/CheckboxPass.bmp", UriKind.Relative); break; case ExerciseStepStatus.Failed: source = new Uri("Images/CheckboxFail.bmp", UriKind.Relative); break; default: source = new Uri("Images/Checkbox.bmp", UriKind.Relative); break; } LabelAndImage lai = new LabelAndImage(new BitmapImage(source), step.stepName, HorizontalAlignment.Left, (double)Application.Current.Resources["SmallButtonHeight"], (double)Application.Current.Resources["BigButtonWidth"], (double)Application.Current.Resources["SmallButtonFont"]); stepPanel.Children.Add(lai); } switch (ex.exerciseStatus) { case ExerciseStatus.Complete: statusLabel.Content = "COMPLETE!"; break; case ExerciseStatus.Failed: statusLabel.Content = "FAIL"; break; } }
public CalibratingView(Exercise ex) { InitializeComponent(); this.ex = ex; secondPassedSound = new SoundPlayer("Sounds/Countdown.wav"); secondPassedSound.LoadAsync(); snapshotSound = new SoundPlayer("Sounds/Camera.wav"); snapshotSound.LoadAsync(); secondsLeft = SharedContent.CalibrationSeconds * ex.getPosesToBeCalibrated().Count(); secondsLabel.Content = String.Format("{0}", SharedContent.CalibrationSeconds); capturing = false; hasCaptured = false; timer = new DispatcherTimer(); timer.Interval = new TimeSpan(0, 0, 1); timer.Tick += timerSecondPassed; timer.Start(); currentPoseBeingCalibrated = 0; drawPose(); }