31 :
public Microsoft::WRL::RuntimeClass<
32 Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::RuntimeClassType::ClassicCom>,
33 Microsoft::WRL::Implements<
34 Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::RuntimeClassType::ClassicCom>,
35 Microsoft::WRL::FtmBase,
36 IDirectManipulationViewportEventHandler>> {
47 DIRECTMANIPULATION_STATUS current,
48 DIRECTMANIPULATION_STATUS previous)
override;
50 HRESULT STDMETHODCALLTYPE
OnViewportUpdated(IDirectManipulationViewport *viewport)
override;
52 HRESULT STDMETHODCALLTYPE
OnContentUpdated(IDirectManipulationViewport *viewport,
53 IDirectManipulationContent *content)
override;
56 enum { GESTURE_NONE, GESTURE_PAN, GESTURE_PINCH } gesture_state;
58 int32_t last_x, last_y, last_scale;
61 DIRECTMANIPULATION_STATUS dm_status;
66class GHOST_DirectManipulationHelper {
75 static GHOST_DirectManipulationHelper *
create(HWND hWnd, uint16_t dpi);
106 GHOST_DirectManipulationHelper(
108 Microsoft::WRL::ComPtr<IDirectManipulationManager> directManipulationManager,
109 Microsoft::WRL::ComPtr<IDirectManipulationUpdateManager> directManipulationUpdateManager,
110 Microsoft::WRL::ComPtr<IDirectManipulationViewport> directManipulationViewport,
111 Microsoft::WRL::ComPtr<GHOST_DirectManipulationViewportEventHandler>
112 directManipulationEventHandler,
113 DWORD directManipulationViewportHandlerCookie,
114 bool isScrollDirectionInverted);
120 static bool getScrollDirectionFromReg();
125 void registerScrollDirectionChangeListener();
129 HKEY scroll_direction_reg_key_;
130 HANDLE scroll_direction_change_event_;
132 Microsoft::WRL::ComPtr<IDirectManipulationManager> direct_manipulation_manager_;
133 Microsoft::WRL::ComPtr<IDirectManipulationUpdateManager> direct_manipulation_update_manager_;
134 Microsoft::WRL::ComPtr<IDirectManipulationViewport> direct_manipulation_viewport_;
135 Microsoft::WRL::ComPtr<GHOST_DirectManipulationViewportEventHandler>
136 direct_manipulation_event_handler_;
137 DWORD direct_manipulation_viewport_handler_cookie_;
139 bool is_scroll_direction_inverted_;