Home | History | Annotate | Download | only in ImageManipulations
      1 //*********************************************************
      2 //
      3 // Copyright (c) Microsoft. All rights reserved.
      4 // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
      5 // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
      6 // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
      7 // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
      8 //
      9 //*********************************************************
     10 
     11 //
     12 // AdvancedCapture.xaml.h
     13 // Declaration of the AdvancedCapture class
     14 //
     15 
     16 #pragma once
     17 
     18 #include "pch.h"
     19 #include "AdvancedCapture.g.h"
     20 #include "MainPage.xaml.h"
     21 #include <ppl.h>
     22 
     23 #define VIDEO_FILE_NAME "video.mp4"
     24 #define PHOTO_FILE_NAME "photo.jpg"
     25 #define TEMP_PHOTO_FILE_NAME "photoTmp.jpg"
     26 
     27 using namespace concurrency;
     28 using namespace Windows::Devices::Enumeration;
     29 
     30 namespace SDKSample
     31 {
     32     namespace MediaCapture
     33     {
     34         /// <summary>
     35         /// An empty page that can be used on its own or navigated to within a Frame.
     36         /// </summary>
     37         [Windows::Foundation::Metadata::WebHostHidden]
     38         public ref class AdvancedCapture sealed
     39         {
     40         public:
     41             AdvancedCapture();
     42 
     43         protected:
     44             virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
     45             virtual void OnNavigatedFrom(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
     46 
     47         private:
     48             MainPage^ rootPage;
     49             void ScenarioInit();
     50             void ScenarioReset();
     51 
     52             void Failed(Windows::Media::Capture::MediaCapture ^ mediaCapture, Windows::Media::Capture::MediaCaptureFailedEventArgs ^ args);
     53 
     54             void btnStartDevice_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
     55 
     56             void btnStartPreview_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
     57 
     58             void lstEnumedDevices_SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e);
     59             void EnumerateWebcamsAsync();
     60 
     61             void AddEffectToImageStream();
     62 
     63             void ShowStatusMessage(Platform::String^ text);
     64             void ShowExceptionMessage(Platform::Exception^ ex);
     65 
     66             void EnableButton(bool enabled, Platform::String ^name);
     67 
     68             task<Windows::Storage::StorageFile^> ReencodePhotoAsync(
     69                 Windows::Storage::StorageFile ^tempStorageFile,
     70                 Windows::Storage::FileProperties::PhotoOrientation photoRotation);
     71             Windows::Storage::FileProperties::PhotoOrientation GetCurrentPhotoRotation();
     72             void PrepareForVideoRecording();
     73             void DisplayProperties_OrientationChanged(Platform::Object^ sender);
     74             Windows::Storage::FileProperties::PhotoOrientation PhotoRotationLookup(
     75                 Windows::Graphics::Display::DisplayOrientations displayOrientation, bool counterclockwise);
     76             Windows::Media::Capture::VideoRotation VideoRotationLookup(
     77                 Windows::Graphics::Display::DisplayOrientations displayOrientation, bool counterclockwise);
     78 
     79             Platform::Agile<Windows::Media::Capture::MediaCapture> m_mediaCaptureMgr;
     80             Windows::Storage::StorageFile^ m_recordStorageFile;
     81             bool m_bRecording;
     82             bool m_bEffectAdded;
     83             bool m_bEffectAddedToRecord;
     84             bool m_bEffectAddedToPhoto;
     85             bool m_bSuspended;
     86             bool m_bPreviewing;
     87             DeviceInformationCollection^ m_devInfoCollection;
     88             Windows::Foundation::EventRegistrationToken m_eventRegistrationToken;
     89             bool m_bRotateVideoOnOrientationChange;
     90             bool m_bReversePreviewRotation;
     91             Windows::Foundation::EventRegistrationToken m_orientationChangedEventToken;
     92             void Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
     93         };
     94     }
     95 }
     96