Blame view

3rdparty/opencv-4.5.4/samples/winrt/ImageManipulations/common/LayoutAwarePage.h 4.27 KB
f4334277   Hu Chunming   提交3rdparty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  //*********************************************************
  //
  // Copyright (c) Microsoft. All rights reserved.
  // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
  // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
  // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
  // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
  //
  //*********************************************************
  
  #pragma once
  
  #include <collection.h>
  
  namespace SDKSample
  {
      namespace Common
      {
          /// <summary>
          /// Typical implementation of Page that provides several important conveniences:
          /// <list type="bullet">
          /// <item>
          /// <description>Application view state to visual state mapping</description>
          /// </item>
          /// <item>
          /// <description>GoBack, GoForward, and GoHome event handlers</description>
          /// </item>
          /// <item>
          /// <description>Mouse and keyboard shortcuts for navigation</description>
          /// </item>
          /// <item>
          /// <description>State management for navigation and process lifetime management</description>
          /// </item>
          /// <item>
          /// <description>A default view model</description>
          /// </item>
          /// </list>
          /// </summary>
          [Windows::Foundation::Metadata::WebHostHidden]
          public ref class LayoutAwarePage : Windows::UI::Xaml::Controls::Page
          {
          internal:
              LayoutAwarePage();
  
          public:
              void StartLayoutUpdates(Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
              void StopLayoutUpdates(Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
              void InvalidateVisualState();
              static property Windows::UI::Xaml::DependencyProperty^ DefaultViewModelProperty
              {
                  Windows::UI::Xaml::DependencyProperty^ get();
              };
              property Windows::Foundation::Collections::IObservableMap<Platform::String^, Platform::Object^>^ DefaultViewModel
              {
                  Windows::Foundation::Collections::IObservableMap<Platform::String^, Platform::Object^>^ get();
                  void set(Windows::Foundation::Collections::IObservableMap<Platform::String^, Platform::Object^>^ value);
              }
  
          protected:
              virtual void GoHome(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
              virtual void GoBack(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
              virtual void GoForward(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
              virtual Platform::String^ DetermineVisualState(Windows::UI::ViewManagement::ApplicationViewState viewState);
              virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
              virtual void OnNavigatedFrom(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
              virtual void LoadState(Platform::Object^ navigationParameter,
                  Windows::Foundation::Collections::IMap<Platform::String^, Platform::Object^>^ pageState);
              virtual void SaveState(Windows::Foundation::Collections::IMap<Platform::String^, Platform::Object^>^ pageState);
  
          private:
              Platform::String^ _pageKey;
              bool _navigationShortcutsRegistered;
              Platform::Collections::Map<Platform::String^, Platform::Object^>^ _defaultViewModel;
              Windows::Foundation::EventRegistrationToken _windowSizeEventToken,
                  _acceleratorKeyEventToken, _pointerPressedEventToken;
              Platform::Collections::Vector<Windows::UI::Xaml::Controls::Control^>^ _layoutAwareControls;
              void WindowSizeChanged(Platform::Object^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ e);
              void OnLoaded(Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
              void OnUnloaded(Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
  
              void CoreDispatcher_AcceleratorKeyActivated(Windows::UI::Core::CoreDispatcher^ sender,
                  Windows::UI::Core::AcceleratorKeyEventArgs^ args);
              void CoreWindow_PointerPressed(Windows::UI::Core::CoreWindow^ sender,
                  Windows::UI::Core::PointerEventArgs^ args);
              LayoutAwarePage^ _this; // Strong reference to self, cleaned up in OnUnload
          };
      }
  }