react-native-windows 0.0.0-canary.708 → 0.0.0-canary.710
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Microsoft.ReactNative/CompositionContext.idl +31 -8
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +495 -182
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +37 -5
- package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +48 -9
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +34 -8
- package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +3 -2
- package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +16 -17
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +1 -0
- package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +1 -2
- package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +3 -4
- package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +2 -0
- package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +121 -44
- package/PropertySheets/External/Microsoft.ReactNative.Composition.Common.props +12 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.props +24 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.targets +20 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.props +14 -0
- package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.targets +18 -0
- package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +1 -1
- package/PropertySheets/Generated/PackageVersion.g.props +2 -2
- package/package.json +2 -2
- package/templates/cpp-app/metro.config.js +51 -0
- package/templates/cpp-app/template.config.js +118 -0
- package/templates/cpp-app/windows/ExperimentalFeatures.props +12 -0
- package/templates/cpp-app/windows/MyApp/MyApp.cpp +284 -0
- package/templates/cpp-app/windows/MyApp/MyApp.h +3 -0
- package/templates/cpp-app/windows/MyApp/MyApp.ico +0 -0
- package/templates/cpp-app/windows/MyApp/MyApp.rc +0 -0
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +142 -0
- package/templates/cpp-app/windows/MyApp/MyApp.vcxproj.filters +55 -0
- package/templates/cpp-app/windows/MyApp/_gitignore +1 -0
- package/templates/cpp-app/windows/MyApp/pch.cpp +1 -0
- package/templates/cpp-app/windows/MyApp/pch.h +35 -0
- package/templates/cpp-app/windows/MyApp/resource.h +18 -0
- package/templates/cpp-app/windows/MyApp/small.ico +0 -0
- package/templates/cpp-app/windows/MyApp/targetver.h +8 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/LockScreenLogo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/SplashScreen.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Square150x150Logo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/StoreLogo.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/Images/Wide310x150Logo.scale-200.png +0 -0
- package/templates/cpp-app/windows/MyApp.Package/MyApp.Package.wapproj +78 -0
- package/templates/cpp-app/windows/MyApp.Package/Package.appxmanifest +49 -0
- package/templates/cpp-app/windows/MyApp.sln +176 -0
- package/templates/cpp-app/windows/_gitignore +41 -0
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
#include "pch.h"
|
|
3
3
|
#include "CompositionContextHelper.h"
|
|
4
|
-
#if __has_include("Composition.
|
|
5
|
-
#include "Composition.
|
|
4
|
+
#if __has_include("Composition.WindowsCompositionContextHelper.g.cpp")
|
|
5
|
+
#include "Composition.WindowsCompositionContextHelper.g.cpp"
|
|
6
|
+
#endif
|
|
7
|
+
#ifdef USE_WINUI3
|
|
8
|
+
#if __has_include("Composition.MicrosoftCompositionContextHelper.g.cpp")
|
|
9
|
+
#include "Composition.MicrosoftCompositionContextHelper.g.cpp"
|
|
10
|
+
#endif
|
|
6
11
|
#endif
|
|
7
12
|
|
|
8
13
|
#include <Windows.Graphics.Interop.h>
|
|
@@ -12,8 +17,127 @@
|
|
|
12
17
|
#include <winrt/Windows.UI.Composition.interactions.h>
|
|
13
18
|
#include "CompositionHelpers.h"
|
|
14
19
|
|
|
20
|
+
#ifdef USE_WINUI3
|
|
21
|
+
#include <microsoft.ui.composition.interop.h>
|
|
22
|
+
#include <winrt/Microsoft.UI.Composition.h>
|
|
23
|
+
#include <winrt/Microsoft.UI.Composition.interactions.h>
|
|
24
|
+
#endif
|
|
25
|
+
|
|
15
26
|
namespace Microsoft::ReactNative::Composition {
|
|
16
27
|
|
|
28
|
+
template <typename TSpriteVisual>
|
|
29
|
+
struct CompositionTypeTraits {};
|
|
30
|
+
|
|
31
|
+
struct WindowsTypeTag;
|
|
32
|
+
template <>
|
|
33
|
+
struct CompositionTypeTraits<WindowsTypeTag> {
|
|
34
|
+
using AnimationDelayBehavior = winrt::Windows::UI::Composition::AnimationDelayBehavior;
|
|
35
|
+
using AnimationDirection = winrt::Windows::UI::Composition::AnimationDirection;
|
|
36
|
+
using AnimationIterationBehavior = winrt::Windows::UI::Composition::AnimationIterationBehavior;
|
|
37
|
+
using CompositionBackfaceVisibility = winrt::Windows::UI::Composition::CompositionBackfaceVisibility;
|
|
38
|
+
using CompositionBrush = winrt::Windows::UI::Composition::CompositionBrush;
|
|
39
|
+
using CompositionDrawingSurface = winrt::Windows::UI::Composition::CompositionDrawingSurface;
|
|
40
|
+
using CompositionNineGridBrush = winrt::Windows::UI::Composition::CompositionNineGridBrush;
|
|
41
|
+
using CompositionPath = winrt::Windows::UI::Composition::CompositionPath;
|
|
42
|
+
using CompositionSpriteShape = winrt::Windows::UI::Composition::CompositionSpriteShape;
|
|
43
|
+
using CompositionStretch = winrt::Windows::UI::Composition::CompositionStretch;
|
|
44
|
+
using CompositionSurfaceBrush = winrt::Windows::UI::Composition::CompositionSurfaceBrush;
|
|
45
|
+
using Compositor = winrt::Windows::UI::Composition::Compositor;
|
|
46
|
+
using ContainerVisual = winrt::Windows::UI::Composition::ContainerVisual;
|
|
47
|
+
using DropShadow = winrt::Windows::UI::Composition::DropShadow;
|
|
48
|
+
using ICompositionSurface = winrt::Windows::UI::Composition::ICompositionSurface;
|
|
49
|
+
using IInteractionTrackerOwner = winrt::Windows::UI::Composition::Interactions::IInteractionTrackerOwner;
|
|
50
|
+
using InteractionSourceMode = winrt::Windows::UI::Composition::Interactions::InteractionSourceMode;
|
|
51
|
+
using InteractionTracker = winrt::Windows::UI::Composition::Interactions::InteractionTracker;
|
|
52
|
+
using InteractionTrackerCustomAnimationStateEnteredArgs =
|
|
53
|
+
winrt::Windows::UI::Composition::Interactions::InteractionTrackerCustomAnimationStateEnteredArgs;
|
|
54
|
+
using InteractionTrackerIdleStateEnteredArgs =
|
|
55
|
+
winrt::Windows::UI::Composition::Interactions::InteractionTrackerIdleStateEnteredArgs;
|
|
56
|
+
using InteractionTrackerInertiaStateEnteredArgs =
|
|
57
|
+
winrt::Windows::UI::Composition::Interactions::InteractionTrackerInertiaStateEnteredArgs;
|
|
58
|
+
using InteractionTrackerInteractingStateEnteredArgs =
|
|
59
|
+
winrt::Windows::UI::Composition::Interactions::InteractionTrackerInteractingStateEnteredArgs;
|
|
60
|
+
using InteractionTrackerRequestIgnoredArgs =
|
|
61
|
+
winrt::Windows::UI::Composition::Interactions::InteractionTrackerRequestIgnoredArgs;
|
|
62
|
+
using InteractionTrackerValuesChangedArgs =
|
|
63
|
+
winrt::Windows::UI::Composition::Interactions::InteractionTrackerValuesChangedArgs;
|
|
64
|
+
using ScalarKeyFrameAnimation = winrt::Windows::UI::Composition::ScalarKeyFrameAnimation;
|
|
65
|
+
using ShapeVisual = winrt::Windows::UI::Composition::ShapeVisual;
|
|
66
|
+
using SpriteVisual = winrt::Windows::UI::Composition::SpriteVisual;
|
|
67
|
+
using Visual = winrt::Windows::UI::Composition::Visual;
|
|
68
|
+
using VisualInteractionSource = winrt::Windows::UI::Composition::Interactions::VisualInteractionSource;
|
|
69
|
+
using VisualInteractionSourceRedirectionMode =
|
|
70
|
+
winrt::Windows::UI::Composition::Interactions::VisualInteractionSourceRedirectionMode;
|
|
71
|
+
using CompositionGraphicsDevice = winrt::Windows::UI::Composition::CompositionGraphicsDevice;
|
|
72
|
+
|
|
73
|
+
using ICompositionDrawingSurfaceInterop = ABI::Windows::UI::Composition::ICompositionDrawingSurfaceInterop;
|
|
74
|
+
using ICompositorInterop = ABI::Windows::UI::Composition::ICompositorInterop;
|
|
75
|
+
using ICompositionGraphicsDevice = ABI::Windows::UI::Composition::ICompositionGraphicsDevice;
|
|
76
|
+
|
|
77
|
+
using IInnerCompositionDropShadow = IWindowsCompositionDropShadow;
|
|
78
|
+
using IInnerCompositionVisual = IWindowsCompositionVisual;
|
|
79
|
+
using IInnerCompositionBrush = IWindowsCompositionBrush;
|
|
80
|
+
using IInnerCompositionDrawingSurface = IWindowsCompositionDrawingSurfaceInner;
|
|
81
|
+
using CompositionContextHelper = winrt::Microsoft::ReactNative::Composition::WindowsCompositionContextHelper;
|
|
82
|
+
};
|
|
83
|
+
using WindowsTypeRedirects = CompositionTypeTraits<WindowsTypeTag>;
|
|
84
|
+
|
|
85
|
+
#ifdef USE_WINUI3
|
|
86
|
+
struct MicrosoftTypeTag;
|
|
87
|
+
template <>
|
|
88
|
+
struct CompositionTypeTraits<MicrosoftTypeTag> {
|
|
89
|
+
using AnimationDelayBehavior = winrt::Microsoft::UI::Composition::AnimationDelayBehavior;
|
|
90
|
+
using AnimationDirection = winrt::Microsoft::UI::Composition::AnimationDirection;
|
|
91
|
+
using AnimationIterationBehavior = winrt::Microsoft::UI::Composition::AnimationIterationBehavior;
|
|
92
|
+
using CompositionBackfaceVisibility = winrt::Microsoft::UI::Composition::CompositionBackfaceVisibility;
|
|
93
|
+
using CompositionBrush = winrt::Microsoft::UI::Composition::CompositionBrush;
|
|
94
|
+
using CompositionDrawingSurface = winrt::Microsoft::UI::Composition::CompositionDrawingSurface;
|
|
95
|
+
using CompositionNineGridBrush = winrt::Microsoft::UI::Composition::CompositionNineGridBrush;
|
|
96
|
+
using CompositionPath = winrt::Microsoft::UI::Composition::CompositionPath;
|
|
97
|
+
using CompositionSpriteShape = winrt::Microsoft::UI::Composition::CompositionSpriteShape;
|
|
98
|
+
using CompositionStretch = winrt::Microsoft::UI::Composition::CompositionStretch;
|
|
99
|
+
using CompositionSurfaceBrush = winrt::Microsoft::UI::Composition::CompositionSurfaceBrush;
|
|
100
|
+
using Compositor = winrt::Microsoft::UI::Composition::Compositor;
|
|
101
|
+
using ContainerVisual = winrt::Microsoft::UI::Composition::ContainerVisual;
|
|
102
|
+
using DropShadow = winrt::Microsoft::UI::Composition::DropShadow;
|
|
103
|
+
using ICompositionSurface = winrt::Microsoft::UI::Composition::ICompositionSurface;
|
|
104
|
+
using IInteractionTrackerOwner = winrt::Microsoft::UI::Composition::Interactions::IInteractionTrackerOwner;
|
|
105
|
+
using InteractionSourceMode = winrt::Microsoft::UI::Composition::Interactions::InteractionSourceMode;
|
|
106
|
+
using InteractionTracker = winrt::Microsoft::UI::Composition::Interactions::InteractionTracker;
|
|
107
|
+
using InteractionTrackerCustomAnimationStateEnteredArgs =
|
|
108
|
+
winrt::Microsoft::UI::Composition::Interactions::InteractionTrackerCustomAnimationStateEnteredArgs;
|
|
109
|
+
using InteractionTrackerIdleStateEnteredArgs =
|
|
110
|
+
winrt::Microsoft::UI::Composition::Interactions::InteractionTrackerIdleStateEnteredArgs;
|
|
111
|
+
using InteractionTrackerInertiaStateEnteredArgs =
|
|
112
|
+
winrt::Microsoft::UI::Composition::Interactions::InteractionTrackerInertiaStateEnteredArgs;
|
|
113
|
+
using InteractionTrackerInteractingStateEnteredArgs =
|
|
114
|
+
winrt::Microsoft::UI::Composition::Interactions::InteractionTrackerInteractingStateEnteredArgs;
|
|
115
|
+
using InteractionTrackerRequestIgnoredArgs =
|
|
116
|
+
winrt::Microsoft::UI::Composition::Interactions::InteractionTrackerRequestIgnoredArgs;
|
|
117
|
+
using InteractionTrackerValuesChangedArgs =
|
|
118
|
+
winrt::Microsoft::UI::Composition::Interactions::InteractionTrackerValuesChangedArgs;
|
|
119
|
+
using ScalarKeyFrameAnimation = winrt::Microsoft::UI::Composition::ScalarKeyFrameAnimation;
|
|
120
|
+
using ShapeVisual = winrt::Microsoft::UI::Composition::ShapeVisual;
|
|
121
|
+
using SpriteVisual = winrt::Microsoft::UI::Composition::SpriteVisual;
|
|
122
|
+
using Visual = winrt::Microsoft::UI::Composition::Visual;
|
|
123
|
+
using VisualInteractionSource = winrt::Microsoft::UI::Composition::Interactions::VisualInteractionSource;
|
|
124
|
+
using VisualInteractionSourceRedirectionMode =
|
|
125
|
+
winrt::Microsoft::UI::Composition::Interactions::VisualInteractionSourceRedirectionMode;
|
|
126
|
+
using CompositionGraphicsDevice = winrt::Microsoft::UI::Composition::CompositionGraphicsDevice;
|
|
127
|
+
|
|
128
|
+
using ICompositionDrawingSurfaceInterop = ABI::Microsoft::UI::Composition::ICompositionDrawingSurfaceInterop;
|
|
129
|
+
using ICompositorInterop = ABI::Microsoft::UI::Composition::ICompositorInterop;
|
|
130
|
+
using ICompositionGraphicsDevice = ABI::Microsoft::UI::Composition::ICompositionGraphicsDevice;
|
|
131
|
+
|
|
132
|
+
using IInnerCompositionDropShadow = IMicrosoftCompositionDropShadow;
|
|
133
|
+
using IInnerCompositionVisual = IMicrosoftCompositionVisual;
|
|
134
|
+
using IInnerCompositionBrush = IMicrosoftCompositionBrush;
|
|
135
|
+
using IInnerCompositionDrawingSurface = IMicrosoftCompositionDrawingSurfaceInner;
|
|
136
|
+
using CompositionContextHelper = winrt::Microsoft::ReactNative::Composition::MicrosoftCompositionContextHelper;
|
|
137
|
+
};
|
|
138
|
+
using MicrosoftTypeRedirects = CompositionTypeTraits<MicrosoftTypeTag>;
|
|
139
|
+
#endif
|
|
140
|
+
|
|
17
141
|
struct GeometrySource : public winrt::implements<
|
|
18
142
|
GeometrySource,
|
|
19
143
|
winrt::Windows::Graphics::IGeometrySource2D,
|
|
@@ -35,12 +159,14 @@ struct GeometrySource : public winrt::implements<
|
|
|
35
159
|
winrt::com_ptr<ID2D1Geometry> m_geometry;
|
|
36
160
|
};
|
|
37
161
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
162
|
+
template <typename TTypeRedirects>
|
|
163
|
+
struct CompDropShadow : public winrt::implements<
|
|
164
|
+
CompDropShadow<TTypeRedirects>,
|
|
165
|
+
winrt::Microsoft::ReactNative::Composition::IDropShadow,
|
|
166
|
+
typename TTypeRedirects::IInnerCompositionDropShadow> {
|
|
167
|
+
CompDropShadow(typename TTypeRedirects::DropShadow const &shadow) : m_shadow(shadow) {}
|
|
42
168
|
|
|
43
|
-
|
|
169
|
+
typename TTypeRedirects::DropShadow InnerShadow() const noexcept override {
|
|
44
170
|
return m_shadow;
|
|
45
171
|
}
|
|
46
172
|
|
|
@@ -61,31 +187,43 @@ struct CompDropShadow
|
|
|
61
187
|
}
|
|
62
188
|
|
|
63
189
|
private:
|
|
64
|
-
|
|
190
|
+
typename TTypeRedirects::DropShadow m_shadow;
|
|
65
191
|
};
|
|
192
|
+
using WindowsCompDropShadow = CompDropShadow<WindowsTypeRedirects>;
|
|
193
|
+
#ifdef USE_WINUI3
|
|
194
|
+
using MicrosoftCompDropShadow = CompDropShadow<MicrosoftTypeRedirects>;
|
|
195
|
+
#endif
|
|
66
196
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
197
|
+
template <typename TTypeRedirects>
|
|
198
|
+
struct CompBrush : public winrt::implements<
|
|
199
|
+
CompBrush<TTypeRedirects>,
|
|
200
|
+
winrt::Microsoft::ReactNative::Composition::IBrush,
|
|
201
|
+
typename TTypeRedirects::IInnerCompositionBrush> {
|
|
202
|
+
CompBrush(typename TTypeRedirects::CompositionBrush const &brush) : m_brush(brush) {}
|
|
70
203
|
|
|
71
|
-
|
|
204
|
+
typename TTypeRedirects::CompositionBrush InnerBrush() const noexcept {
|
|
72
205
|
return m_brush;
|
|
73
206
|
}
|
|
74
207
|
|
|
75
208
|
private:
|
|
76
|
-
|
|
209
|
+
typename TTypeRedirects::CompositionBrush m_brush;
|
|
77
210
|
};
|
|
211
|
+
using WindowsCompBrush = CompBrush<WindowsTypeRedirects>;
|
|
212
|
+
#ifdef USE_WINUI3
|
|
213
|
+
using MicrosoftCompBrush = CompBrush<MicrosoftTypeRedirects>;
|
|
214
|
+
#endif
|
|
78
215
|
|
|
216
|
+
template <typename TTypeRedirects>
|
|
79
217
|
struct CompDrawingSurfaceBrush : public winrt::implements<
|
|
80
|
-
CompDrawingSurfaceBrush
|
|
218
|
+
CompDrawingSurfaceBrush<TTypeRedirects>,
|
|
81
219
|
winrt::Microsoft::ReactNative::Composition::IDrawingSurfaceBrush,
|
|
82
220
|
winrt::Microsoft::ReactNative::Composition::IBrush,
|
|
83
|
-
|
|
221
|
+
typename TTypeRedirects::IInnerCompositionBrush,
|
|
84
222
|
ICompositionDrawingSurfaceInterop,
|
|
85
|
-
|
|
223
|
+
typename TTypeRedirects::IInnerCompositionDrawingSurface> {
|
|
86
224
|
CompDrawingSurfaceBrush(
|
|
87
|
-
const
|
|
88
|
-
|
|
225
|
+
const typename TTypeRedirects::Compositor &compositor,
|
|
226
|
+
typename TTypeRedirects::CompositionDrawingSurface const &drawingSurface)
|
|
89
227
|
: m_brush(compositor.CreateSurfaceBrush(drawingSurface)) {
|
|
90
228
|
drawingSurface.as(m_drawingSurfaceInterop);
|
|
91
229
|
}
|
|
@@ -98,13 +236,13 @@ struct CompDrawingSurfaceBrush : public winrt::implements<
|
|
|
98
236
|
return m_drawingSurfaceInterop->EndDraw();
|
|
99
237
|
}
|
|
100
238
|
|
|
101
|
-
|
|
102
|
-
|
|
239
|
+
typename TTypeRedirects::ICompositionSurface Inner() const noexcept {
|
|
240
|
+
typename TTypeRedirects::ICompositionSurface surface;
|
|
103
241
|
m_drawingSurfaceInterop.as(surface);
|
|
104
242
|
return surface;
|
|
105
243
|
}
|
|
106
244
|
|
|
107
|
-
|
|
245
|
+
typename TTypeRedirects::CompositionBrush InnerBrush() const noexcept {
|
|
108
246
|
return m_brush;
|
|
109
247
|
}
|
|
110
248
|
|
|
@@ -118,43 +256,48 @@ struct CompDrawingSurfaceBrush : public winrt::implements<
|
|
|
118
256
|
void Stretch(winrt::Microsoft::ReactNative::Composition::CompositionStretch mode) noexcept {
|
|
119
257
|
static_assert(
|
|
120
258
|
static_cast<winrt::Microsoft::ReactNative::Composition::CompositionStretch>(
|
|
121
|
-
|
|
259
|
+
TTypeRedirects::CompositionStretch::None) ==
|
|
122
260
|
winrt::Microsoft::ReactNative::Composition::CompositionStretch::None);
|
|
123
261
|
static_assert(
|
|
124
262
|
static_cast<winrt::Microsoft::ReactNative::Composition::CompositionStretch>(
|
|
125
|
-
|
|
263
|
+
TTypeRedirects::CompositionStretch::Fill) ==
|
|
126
264
|
winrt::Microsoft::ReactNative::Composition::CompositionStretch::Fill);
|
|
127
265
|
static_assert(
|
|
128
266
|
static_cast<winrt::Microsoft::ReactNative::Composition::CompositionStretch>(
|
|
129
|
-
|
|
267
|
+
TTypeRedirects::CompositionStretch::Uniform) ==
|
|
130
268
|
winrt::Microsoft::ReactNative::Composition::CompositionStretch::Uniform);
|
|
131
269
|
static_assert(
|
|
132
270
|
static_cast<winrt::Microsoft::ReactNative::Composition::CompositionStretch>(
|
|
133
|
-
|
|
271
|
+
TTypeRedirects::CompositionStretch::UniformToFill) ==
|
|
134
272
|
winrt::Microsoft::ReactNative::Composition::CompositionStretch::UniformToFill);
|
|
135
273
|
|
|
136
|
-
m_brush.Stretch(static_cast<
|
|
274
|
+
m_brush.Stretch(static_cast<typename TTypeRedirects::CompositionStretch>(mode));
|
|
137
275
|
}
|
|
138
276
|
|
|
139
277
|
private:
|
|
140
|
-
|
|
141
|
-
winrt::com_ptr<
|
|
278
|
+
typename TTypeRedirects::CompositionSurfaceBrush m_brush;
|
|
279
|
+
winrt::com_ptr<typename TTypeRedirects::ICompositionDrawingSurfaceInterop> m_drawingSurfaceInterop;
|
|
142
280
|
};
|
|
281
|
+
using WindowsCompDrawingSurfaceBrush = CompDrawingSurfaceBrush<WindowsTypeRedirects>;
|
|
282
|
+
#ifdef USE_WINUI3
|
|
283
|
+
using MicrosoftCompDrawingSurfaceBrush = CompDrawingSurfaceBrush<MicrosoftTypeRedirects>;
|
|
284
|
+
#endif
|
|
143
285
|
|
|
286
|
+
template <typename TTypeRedirects>
|
|
144
287
|
struct CompVisual : public winrt::implements<
|
|
145
|
-
CompVisual
|
|
288
|
+
CompVisual<TTypeRedirects>,
|
|
146
289
|
winrt::Microsoft::ReactNative::Composition::IVisual,
|
|
147
|
-
|
|
290
|
+
typename TTypeRedirects::IInnerCompositionVisual,
|
|
148
291
|
IVisualInterop> {
|
|
149
|
-
CompVisual(
|
|
292
|
+
CompVisual(typename TTypeRedirects::Visual const &visual) : m_visual(visual) {}
|
|
150
293
|
|
|
151
|
-
|
|
294
|
+
typename TTypeRedirects::Visual InnerVisual() const noexcept override {
|
|
152
295
|
return m_visual;
|
|
153
296
|
}
|
|
154
297
|
|
|
155
298
|
void InsertAt(const winrt::Microsoft::ReactNative::Composition::IVisual &visual, uint32_t index) noexcept {
|
|
156
|
-
auto containerChildren = m_visual.as<
|
|
157
|
-
auto compVisual =
|
|
299
|
+
auto containerChildren = m_visual.as<typename TTypeRedirects::ContainerVisual>().Children();
|
|
300
|
+
auto compVisual = TTypeRedirects::CompositionContextHelper::InnerVisual(visual);
|
|
158
301
|
if (index == 0 || containerChildren.Count() == 0) {
|
|
159
302
|
containerChildren.InsertAtTop(compVisual);
|
|
160
303
|
return;
|
|
@@ -166,18 +309,17 @@ struct CompVisual : public winrt::implements<
|
|
|
166
309
|
}
|
|
167
310
|
|
|
168
311
|
void Remove(const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
|
|
169
|
-
auto compVisual =
|
|
170
|
-
auto containerChildren = m_visual.as<
|
|
312
|
+
auto compVisual = TTypeRedirects::CompositionContextHelper::InnerVisual(visual);
|
|
313
|
+
auto containerChildren = m_visual.as<typename TTypeRedirects::ContainerVisual>().Children();
|
|
171
314
|
containerChildren.Remove(compVisual);
|
|
172
315
|
}
|
|
173
316
|
|
|
174
317
|
winrt::Microsoft::ReactNative::Composition::IVisual GetAt(uint32_t index) noexcept {
|
|
175
|
-
auto containerChildren = m_visual.as<
|
|
318
|
+
auto containerChildren = m_visual.as<typename TTypeRedirects::ContainerVisual>().Children();
|
|
176
319
|
auto it = containerChildren.First();
|
|
177
320
|
for (uint32_t i = 0; i < index; i++)
|
|
178
321
|
it.MoveNext();
|
|
179
|
-
return
|
|
180
|
-
it.Current());
|
|
322
|
+
return TTypeRedirects::CompositionContextHelper::CreateVisual(it.Current());
|
|
181
323
|
}
|
|
182
324
|
|
|
183
325
|
void SetClippingPath(ID2D1Geometry *clippingPath) noexcept {
|
|
@@ -186,7 +328,7 @@ struct CompVisual : public winrt::implements<
|
|
|
186
328
|
return;
|
|
187
329
|
}
|
|
188
330
|
auto geometry = winrt::make<GeometrySource>(clippingPath);
|
|
189
|
-
auto path =
|
|
331
|
+
auto path = typename TTypeRedirects::CompositionPath(geometry);
|
|
190
332
|
auto pathgeo = m_visual.Compositor().CreatePathGeometry(path);
|
|
191
333
|
auto clip = m_visual.Compositor().CreateGeometricClip(pathgeo);
|
|
192
334
|
m_visual.Clip(clip);
|
|
@@ -239,28 +381,33 @@ struct CompVisual : public winrt::implements<
|
|
|
239
381
|
}
|
|
240
382
|
|
|
241
383
|
void BackfaceVisibility(winrt::Microsoft::ReactNative::Composition::BackfaceVisibility value) {
|
|
242
|
-
m_visual.BackfaceVisibility(static_cast<
|
|
384
|
+
m_visual.BackfaceVisibility(static_cast<typename TTypeRedirects::CompositionBackfaceVisibility>(value));
|
|
243
385
|
}
|
|
244
386
|
|
|
245
387
|
private:
|
|
246
|
-
|
|
388
|
+
typename TTypeRedirects::Visual m_visual;
|
|
247
389
|
};
|
|
390
|
+
using WindowsCompVisual = CompVisual<WindowsTypeRedirects>;
|
|
391
|
+
#ifdef USE_WINUI3
|
|
392
|
+
using MicrosoftCompVisual = CompVisual<MicrosoftTypeRedirects>;
|
|
393
|
+
#endif
|
|
248
394
|
|
|
395
|
+
template <typename TTypeRedirects>
|
|
249
396
|
struct CompSpriteVisual : winrt::implements<
|
|
250
|
-
CompSpriteVisual
|
|
397
|
+
CompSpriteVisual<TTypeRedirects>,
|
|
251
398
|
winrt::Microsoft::ReactNative::Composition::ISpriteVisual,
|
|
252
399
|
winrt::Microsoft::ReactNative::Composition::IVisual,
|
|
253
|
-
|
|
400
|
+
typename TTypeRedirects::IInnerCompositionVisual,
|
|
254
401
|
IVisualInterop> {
|
|
255
|
-
CompSpriteVisual(
|
|
402
|
+
CompSpriteVisual(typename TTypeRedirects::SpriteVisual const &visual) : m_visual(visual) {}
|
|
256
403
|
|
|
257
|
-
|
|
404
|
+
typename TTypeRedirects::Visual InnerVisual() const noexcept override {
|
|
258
405
|
return m_visual;
|
|
259
406
|
}
|
|
260
407
|
|
|
261
408
|
void InsertAt(const winrt::Microsoft::ReactNative::Composition::IVisual &visual, uint32_t index) noexcept {
|
|
262
409
|
auto containerChildren = m_visual.Children();
|
|
263
|
-
auto compVisual =
|
|
410
|
+
auto compVisual = TTypeRedirects::CompositionContextHelper::InnerVisual(visual);
|
|
264
411
|
if (index == 0) {
|
|
265
412
|
containerChildren.InsertAtBottom(compVisual);
|
|
266
413
|
return;
|
|
@@ -272,22 +419,21 @@ struct CompSpriteVisual : winrt::implements<
|
|
|
272
419
|
}
|
|
273
420
|
|
|
274
421
|
void Remove(const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
|
|
275
|
-
auto compVisual =
|
|
422
|
+
auto compVisual = TTypeRedirects::CompositionContextHelper::InnerVisual(visual);
|
|
276
423
|
auto containerChildren = m_visual.Children();
|
|
277
424
|
containerChildren.Remove(compVisual);
|
|
278
425
|
}
|
|
279
426
|
|
|
280
427
|
winrt::Microsoft::ReactNative::Composition::IVisual GetAt(uint32_t index) noexcept {
|
|
281
|
-
auto containerChildren = m_visual.as<
|
|
428
|
+
auto containerChildren = m_visual.as<typename TTypeRedirects::ContainerVisual>().Children();
|
|
282
429
|
auto it = containerChildren.First();
|
|
283
430
|
for (uint32_t i = 0; i < index; i++)
|
|
284
431
|
it.MoveNext();
|
|
285
|
-
return
|
|
286
|
-
it.Current());
|
|
432
|
+
return TTypeRedirects::CompositionContextHelper::CreateVisual(it.Current());
|
|
287
433
|
}
|
|
288
434
|
|
|
289
435
|
void Brush(const winrt::Microsoft::ReactNative::Composition::IBrush &brush) noexcept {
|
|
290
|
-
m_visual.Brush(
|
|
436
|
+
m_visual.Brush(TTypeRedirects::CompositionContextHelper::InnerBrush(brush));
|
|
291
437
|
}
|
|
292
438
|
|
|
293
439
|
void Opacity(float opacity) noexcept {
|
|
@@ -337,7 +483,7 @@ struct CompSpriteVisual : winrt::implements<
|
|
|
337
483
|
}
|
|
338
484
|
|
|
339
485
|
void BackfaceVisibility(winrt::Microsoft::ReactNative::Composition::BackfaceVisibility value) {
|
|
340
|
-
m_visual.BackfaceVisibility(static_cast<
|
|
486
|
+
m_visual.BackfaceVisibility(static_cast<typename TTypeRedirects::CompositionBackfaceVisibility>(value));
|
|
341
487
|
}
|
|
342
488
|
|
|
343
489
|
void SetClippingPath(ID2D1Geometry *clippingPath) noexcept {
|
|
@@ -346,19 +492,23 @@ struct CompSpriteVisual : winrt::implements<
|
|
|
346
492
|
return;
|
|
347
493
|
}
|
|
348
494
|
auto geometry = winrt::make<GeometrySource>(clippingPath);
|
|
349
|
-
auto path =
|
|
495
|
+
auto path = TTypeRedirects::CompositionPath(geometry);
|
|
350
496
|
auto pathgeo = m_visual.Compositor().CreatePathGeometry(path);
|
|
351
497
|
auto clip = m_visual.Compositor().CreateGeometricClip(pathgeo);
|
|
352
498
|
m_visual.Clip(clip);
|
|
353
499
|
}
|
|
354
500
|
|
|
355
501
|
void Shadow(const winrt::Microsoft::ReactNative::Composition::IDropShadow &shadow) noexcept {
|
|
356
|
-
m_visual.Shadow(
|
|
502
|
+
m_visual.Shadow(TTypeRedirects::CompositionContextHelper::InnerDropShadow(shadow));
|
|
357
503
|
}
|
|
358
504
|
|
|
359
505
|
private:
|
|
360
|
-
|
|
506
|
+
typename TTypeRedirects::SpriteVisual m_visual;
|
|
361
507
|
};
|
|
508
|
+
using WindowsCompSpriteVisual = CompSpriteVisual<WindowsTypeRedirects>;
|
|
509
|
+
#ifdef USE_WINUI3
|
|
510
|
+
using MicrosoftCompSpriteVisual = CompSpriteVisual<MicrosoftTypeRedirects>;
|
|
511
|
+
#endif
|
|
362
512
|
|
|
363
513
|
struct CompScrollPositionChangedArgs : winrt::implements<
|
|
364
514
|
CompScrollPositionChangedArgs,
|
|
@@ -373,36 +523,35 @@ struct CompScrollPositionChangedArgs : winrt::implements<
|
|
|
373
523
|
winrt::Windows::Foundation::Numerics::float2 m_position;
|
|
374
524
|
};
|
|
375
525
|
|
|
526
|
+
template <typename TTypeRedirects>
|
|
376
527
|
struct CompScrollerVisual : winrt::implements<
|
|
377
|
-
CompScrollerVisual
|
|
528
|
+
CompScrollerVisual<TTypeRedirects>,
|
|
378
529
|
winrt::Microsoft::ReactNative::Composition::IScrollVisual,
|
|
379
530
|
winrt::Microsoft::ReactNative::Composition::IVisual,
|
|
380
|
-
|
|
531
|
+
typename TTypeRedirects::IInnerCompositionVisual,
|
|
381
532
|
IVisualInterop> {
|
|
382
|
-
struct ScrollInteractionTrackerOwner
|
|
383
|
-
|
|
384
|
-
winrt::Windows::UI::Composition::Interactions::IInteractionTrackerOwner> {
|
|
533
|
+
struct ScrollInteractionTrackerOwner
|
|
534
|
+
: public winrt::implements<ScrollInteractionTrackerOwner, typename TTypeRedirects::IInteractionTrackerOwner> {
|
|
385
535
|
ScrollInteractionTrackerOwner(CompScrollerVisual *outer) : m_outer(outer){};
|
|
386
536
|
|
|
387
537
|
void CustomAnimationStateEntered(
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
args) noexcept {}
|
|
538
|
+
typename TTypeRedirects::InteractionTracker sender,
|
|
539
|
+
typename TTypeRedirects::InteractionTrackerCustomAnimationStateEnteredArgs args) noexcept {}
|
|
391
540
|
void IdleStateEntered(
|
|
392
|
-
|
|
393
|
-
|
|
541
|
+
typename TTypeRedirects::InteractionTracker sender,
|
|
542
|
+
typename TTypeRedirects::InteractionTrackerIdleStateEnteredArgs args) noexcept {}
|
|
394
543
|
void InertiaStateEntered(
|
|
395
|
-
|
|
396
|
-
|
|
544
|
+
typename TTypeRedirects::InteractionTracker sender,
|
|
545
|
+
typename TTypeRedirects::InteractionTrackerInertiaStateEnteredArgs args) noexcept {}
|
|
397
546
|
void InteractingStateEntered(
|
|
398
|
-
|
|
399
|
-
|
|
547
|
+
typename TTypeRedirects::InteractionTracker sender,
|
|
548
|
+
typename TTypeRedirects::InteractionTrackerInteractingStateEnteredArgs args) noexcept {}
|
|
400
549
|
void RequestIgnored(
|
|
401
|
-
|
|
402
|
-
|
|
550
|
+
typename TTypeRedirects::InteractionTracker sender,
|
|
551
|
+
typename TTypeRedirects::InteractionTrackerRequestIgnoredArgs args) noexcept {}
|
|
403
552
|
void ValuesChanged(
|
|
404
|
-
|
|
405
|
-
|
|
553
|
+
typename TTypeRedirects::InteractionTracker sender,
|
|
554
|
+
typename TTypeRedirects::InteractionTrackerValuesChangedArgs args) noexcept {
|
|
406
555
|
m_outer->FireScrollPositionChanged({args.Position().x, args.Position().y});
|
|
407
556
|
}
|
|
408
557
|
|
|
@@ -410,7 +559,7 @@ struct CompScrollerVisual : winrt::implements<
|
|
|
410
559
|
CompScrollerVisual *m_outer;
|
|
411
560
|
};
|
|
412
561
|
|
|
413
|
-
CompScrollerVisual(
|
|
562
|
+
CompScrollerVisual(typename TTypeRedirects::SpriteVisual const &visual) : m_visual(visual) {
|
|
414
563
|
auto compositor = m_visual.Compositor();
|
|
415
564
|
m_contentVisual = compositor.CreateSpriteVisual();
|
|
416
565
|
|
|
@@ -422,25 +571,20 @@ struct CompScrollerVisual : winrt::implements<
|
|
|
422
571
|
|
|
423
572
|
m_visual.Clip(compositor.CreateInsetClip(0, 0, 0, 0));
|
|
424
573
|
|
|
425
|
-
m_interactionTracker =
|
|
574
|
+
m_interactionTracker = TTypeRedirects::InteractionTracker::CreateWithOwner(
|
|
426
575
|
compositor, winrt::make<ScrollInteractionTrackerOwner>(this));
|
|
427
576
|
|
|
428
577
|
m_interactionTracker.MinScale(1.0);
|
|
429
578
|
m_interactionTracker.MaxScale(1.0);
|
|
430
579
|
|
|
431
|
-
m_visualInteractionSource =
|
|
432
|
-
winrt::Windows::UI::Composition::Interactions::VisualInteractionSource::Create(m_visual);
|
|
580
|
+
m_visualInteractionSource = TTypeRedirects::VisualInteractionSource::Create(m_visual);
|
|
433
581
|
|
|
434
|
-
m_visualInteractionSource.PositionXSourceMode(
|
|
435
|
-
|
|
436
|
-
m_visualInteractionSource.
|
|
437
|
-
winrt::Windows::UI::Composition::Interactions::InteractionSourceMode::EnabledWithInertia);
|
|
438
|
-
m_visualInteractionSource.ScaleSourceMode(
|
|
439
|
-
winrt::Windows::UI::Composition::Interactions::InteractionSourceMode::Disabled);
|
|
582
|
+
m_visualInteractionSource.PositionXSourceMode(TTypeRedirects::InteractionSourceMode::EnabledWithInertia);
|
|
583
|
+
m_visualInteractionSource.PositionYSourceMode(TTypeRedirects::InteractionSourceMode::EnabledWithInertia);
|
|
584
|
+
m_visualInteractionSource.ScaleSourceMode(TTypeRedirects::InteractionSourceMode::Disabled);
|
|
440
585
|
|
|
441
586
|
m_visualInteractionSource.ManipulationRedirectionMode(
|
|
442
|
-
|
|
443
|
-
CapableTouchpadAndPointerWheel);
|
|
587
|
+
TTypeRedirects::VisualInteractionSourceRedirectionMode::CapableTouchpadAndPointerWheel);
|
|
444
588
|
m_interactionTracker.InteractionSources().Add(m_visualInteractionSource);
|
|
445
589
|
|
|
446
590
|
auto positionExpression = compositor.CreateExpressionAnimation(L"-tracker.Position");
|
|
@@ -448,13 +592,13 @@ struct CompScrollerVisual : winrt::implements<
|
|
|
448
592
|
m_contentVisual.StartAnimation(L"Offset", positionExpression);
|
|
449
593
|
}
|
|
450
594
|
|
|
451
|
-
|
|
595
|
+
typename TTypeRedirects::Visual InnerVisual() const noexcept {
|
|
452
596
|
return m_visual;
|
|
453
597
|
}
|
|
454
598
|
|
|
455
599
|
void InsertAt(const winrt::Microsoft::ReactNative::Composition::IVisual &visual, uint32_t index) noexcept {
|
|
456
600
|
auto containerChildren = m_contentVisual.Children();
|
|
457
|
-
auto compVisual =
|
|
601
|
+
auto compVisual = TTypeRedirects::CompositionContextHelper::InnerVisual(visual);
|
|
458
602
|
if (index == 0 || containerChildren.Count() == 0) {
|
|
459
603
|
containerChildren.InsertAtTop(compVisual);
|
|
460
604
|
return;
|
|
@@ -466,22 +610,21 @@ struct CompScrollerVisual : winrt::implements<
|
|
|
466
610
|
}
|
|
467
611
|
|
|
468
612
|
void Remove(const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
|
|
469
|
-
auto compVisual =
|
|
613
|
+
auto compVisual = TTypeRedirects::CompositionContextHelper::InnerVisual(visual);
|
|
470
614
|
auto containerChildren = m_contentVisual.Children();
|
|
471
615
|
containerChildren.Remove(compVisual);
|
|
472
616
|
}
|
|
473
617
|
|
|
474
618
|
winrt::Microsoft::ReactNative::Composition::IVisual GetAt(uint32_t index) noexcept {
|
|
475
|
-
auto containerChildren = m_visual.as<
|
|
619
|
+
auto containerChildren = m_visual.as<typename TTypeRedirects::ContainerVisual>().Children();
|
|
476
620
|
auto it = containerChildren.First();
|
|
477
621
|
for (uint32_t i = 0; i < index; i++)
|
|
478
622
|
it.MoveNext();
|
|
479
|
-
return
|
|
480
|
-
it.Current());
|
|
623
|
+
return TTypeRedirects::CompositionContextHelper::CreateVisual(it.Current());
|
|
481
624
|
}
|
|
482
625
|
|
|
483
626
|
void Brush(const winrt::Microsoft::ReactNative::Composition::IBrush &brush) noexcept {
|
|
484
|
-
m_visual.Brush(
|
|
627
|
+
m_visual.Brush(TTypeRedirects::CompositionContextHelper::InnerBrush(brush));
|
|
485
628
|
}
|
|
486
629
|
|
|
487
630
|
void Opacity(float opacity) noexcept {
|
|
@@ -533,7 +676,7 @@ struct CompScrollerVisual : winrt::implements<
|
|
|
533
676
|
}
|
|
534
677
|
|
|
535
678
|
void BackfaceVisibility(winrt::Microsoft::ReactNative::Composition::BackfaceVisibility value) {
|
|
536
|
-
m_visual.BackfaceVisibility(static_cast<
|
|
679
|
+
m_visual.BackfaceVisibility(static_cast<typename TTypeRedirects::CompositionBackfaceVisibility>(value));
|
|
537
680
|
}
|
|
538
681
|
|
|
539
682
|
void SetClippingPath(ID2D1Geometry *clippingPath) noexcept {
|
|
@@ -542,14 +685,14 @@ struct CompScrollerVisual : winrt::implements<
|
|
|
542
685
|
return;
|
|
543
686
|
}
|
|
544
687
|
auto geometry = winrt::make<GeometrySource>(clippingPath);
|
|
545
|
-
auto path =
|
|
688
|
+
auto path = TTypeRedirects::CompositionPath(geometry);
|
|
546
689
|
auto pathgeo = m_visual.Compositor().CreatePathGeometry(path);
|
|
547
690
|
auto clip = m_visual.Compositor().CreateGeometricClip(pathgeo);
|
|
548
691
|
m_visual.Clip(clip);
|
|
549
692
|
}
|
|
550
693
|
|
|
551
694
|
void Shadow(const winrt::Microsoft::ReactNative::Composition::IDropShadow &shadow) noexcept {
|
|
552
|
-
m_visual.Shadow(
|
|
695
|
+
m_visual.Shadow(TTypeRedirects::CompositionContextHelper::InnerDropShadow(shadow));
|
|
553
696
|
}
|
|
554
697
|
|
|
555
698
|
winrt::event_token ScrollPositionChanged(
|
|
@@ -606,19 +749,24 @@ struct CompScrollerVisual : winrt::implements<
|
|
|
606
749
|
winrt::event<
|
|
607
750
|
winrt::Windows::Foundation::EventHandler<winrt::Microsoft::ReactNative::Composition::IScrollPositionChangedArgs>>
|
|
608
751
|
m_scrollPositionChangedEvent;
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
752
|
+
typename TTypeRedirects::SpriteVisual m_visual{nullptr};
|
|
753
|
+
typename TTypeRedirects::SpriteVisual m_contentVisual{nullptr};
|
|
754
|
+
typename TTypeRedirects::InteractionTracker m_interactionTracker{nullptr};
|
|
755
|
+
typename TTypeRedirects::VisualInteractionSource m_visualInteractionSource{nullptr};
|
|
613
756
|
};
|
|
757
|
+
using WindowsCompScrollerVisual = CompScrollerVisual<WindowsTypeRedirects>;
|
|
758
|
+
#ifdef USE_WINUI3
|
|
759
|
+
using MicrosoftCompScrollerVisual = CompScrollerVisual<MicrosoftTypeRedirects>;
|
|
760
|
+
#endif
|
|
614
761
|
|
|
762
|
+
template <typename TTypeRedirects>
|
|
615
763
|
struct CompActivityVisual : winrt::implements<
|
|
616
|
-
CompActivityVisual
|
|
764
|
+
CompActivityVisual<TTypeRedirects>,
|
|
617
765
|
winrt::Microsoft::ReactNative::Composition::IActivityVisual,
|
|
618
766
|
winrt::Microsoft::ReactNative::Composition::IVisual,
|
|
619
|
-
|
|
767
|
+
typename TTypeRedirects::IInnerCompositionVisual,
|
|
620
768
|
IVisualInterop> {
|
|
621
|
-
CompActivityVisual(
|
|
769
|
+
CompActivityVisual(typename TTypeRedirects::SpriteVisual const &visual) : m_visual(visual) {
|
|
622
770
|
auto compositor = m_visual.Compositor();
|
|
623
771
|
m_contentVisual = compositor.CreateSpriteVisual();
|
|
624
772
|
|
|
@@ -638,9 +786,7 @@ struct CompActivityVisual : winrt::implements<
|
|
|
638
786
|
}
|
|
639
787
|
}
|
|
640
788
|
|
|
641
|
-
|
|
642
|
-
winrt::Windows::UI::Composition::Compositor compositor,
|
|
643
|
-
int delay) {
|
|
789
|
+
typename TTypeRedirects::ShapeVisual createLoadingCircle(typename TTypeRedirects::Compositor compositor, int delay) {
|
|
644
790
|
// Create circle
|
|
645
791
|
auto ellipse = compositor.CreateEllipseGeometry();
|
|
646
792
|
ellipse.Radius({m_ringWidth, m_ringWidth});
|
|
@@ -658,7 +804,7 @@ struct CompActivityVisual : winrt::implements<
|
|
|
658
804
|
// Create an OpacityAnimation
|
|
659
805
|
auto opacityAnimation = compositor.CreateScalarKeyFrameAnimation();
|
|
660
806
|
opacityAnimation.Duration(std::chrono::seconds(2));
|
|
661
|
-
opacityAnimation.IterationBehavior(
|
|
807
|
+
opacityAnimation.IterationBehavior(TTypeRedirects::AnimationIterationBehavior::Forever);
|
|
662
808
|
opacityAnimation.DelayTime(std::chrono::milliseconds(650 + delay));
|
|
663
809
|
|
|
664
810
|
opacityAnimation.InsertKeyFrame(0.0f, 0.0f); // Initial opacity (fully transparent)
|
|
@@ -669,10 +815,10 @@ struct CompActivityVisual : winrt::implements<
|
|
|
669
815
|
// create an animation for the Offset property of the ShapeVisual
|
|
670
816
|
auto animation = compositor.CreateVector2KeyFrameAnimation();
|
|
671
817
|
animation.Duration(std::chrono::seconds(2));
|
|
672
|
-
animation.Direction(
|
|
673
|
-
animation.IterationBehavior(
|
|
818
|
+
animation.Direction(TTypeRedirects::AnimationDirection::Normal);
|
|
819
|
+
animation.IterationBehavior(TTypeRedirects::AnimationIterationBehavior::Forever);
|
|
674
820
|
animation.DelayTime(std::chrono::milliseconds(delay));
|
|
675
|
-
animation.DelayBehavior(
|
|
821
|
+
animation.DelayBehavior(TTypeRedirects::AnimationDelayBehavior::SetInitialValueAfterDelay);
|
|
676
822
|
|
|
677
823
|
// create path animation
|
|
678
824
|
float progress = 2.0f * static_cast<float>(M_PI); // specifies the end of the keyframe progress
|
|
@@ -690,13 +836,13 @@ struct CompActivityVisual : winrt::implements<
|
|
|
690
836
|
return circleShape;
|
|
691
837
|
}
|
|
692
838
|
|
|
693
|
-
|
|
839
|
+
typename TTypeRedirects::Visual InnerVisual() const noexcept {
|
|
694
840
|
return m_visual;
|
|
695
841
|
}
|
|
696
842
|
|
|
697
843
|
void InsertAt(const winrt::Microsoft::ReactNative::Composition::IVisual &visual, uint32_t index) noexcept {
|
|
698
844
|
auto containerChildren = m_contentVisual.Children();
|
|
699
|
-
auto compVisual =
|
|
845
|
+
auto compVisual = typename TTypeRedirects::CompositionContextHelper::InnerVisual(visual);
|
|
700
846
|
if (index == 0 || containerChildren.Count() == 0) {
|
|
701
847
|
containerChildren.InsertAtTop(compVisual);
|
|
702
848
|
return;
|
|
@@ -708,18 +854,17 @@ struct CompActivityVisual : winrt::implements<
|
|
|
708
854
|
}
|
|
709
855
|
|
|
710
856
|
void Remove(const winrt::Microsoft::ReactNative::Composition::IVisual &visual) noexcept {
|
|
711
|
-
auto compVisual =
|
|
857
|
+
auto compVisual = typename TTypeRedirects::CompositionContextHelper::InnerVisual(visual);
|
|
712
858
|
auto containerChildren = m_contentVisual.Children();
|
|
713
859
|
containerChildren.Remove(compVisual);
|
|
714
860
|
}
|
|
715
861
|
|
|
716
862
|
winrt::Microsoft::ReactNative::Composition::IVisual GetAt(uint32_t index) noexcept {
|
|
717
|
-
auto containerChildren = m_visual.as<
|
|
863
|
+
auto containerChildren = m_visual.as<typename TTypeRedirects::ContainerVisual>().Children();
|
|
718
864
|
auto it = containerChildren.First();
|
|
719
865
|
for (uint32_t i = 0; i < index; i++)
|
|
720
866
|
it.MoveNext();
|
|
721
|
-
return
|
|
722
|
-
it.Current());
|
|
867
|
+
return typename TTypeRedirects::CompositionContextHelper::CreateVisual(it.Current());
|
|
723
868
|
}
|
|
724
869
|
|
|
725
870
|
void Opacity(float opacity) noexcept {
|
|
@@ -770,7 +915,7 @@ struct CompActivityVisual : winrt::implements<
|
|
|
770
915
|
}
|
|
771
916
|
|
|
772
917
|
void BackfaceVisibility(winrt::Microsoft::ReactNative::Composition::BackfaceVisibility value) {
|
|
773
|
-
m_visual.BackfaceVisibility(static_cast<
|
|
918
|
+
m_visual.BackfaceVisibility(static_cast<typename TTypeRedirects::CompositionBackfaceVisibility>(value));
|
|
774
919
|
}
|
|
775
920
|
|
|
776
921
|
void SetClippingPath(ID2D1Geometry *clippingPath) noexcept {
|
|
@@ -779,7 +924,7 @@ struct CompActivityVisual : winrt::implements<
|
|
|
779
924
|
return;
|
|
780
925
|
}
|
|
781
926
|
auto geometry = winrt::make<GeometrySource>(clippingPath);
|
|
782
|
-
auto path =
|
|
927
|
+
auto path = typename TTypeRedirects::CompositionPath(geometry);
|
|
783
928
|
auto pathgeo = m_visual.Compositor().CreatePathGeometry(path);
|
|
784
929
|
auto clip = m_visual.Compositor().CreateGeometricClip(pathgeo);
|
|
785
930
|
m_visual.Clip(clip);
|
|
@@ -787,9 +932,9 @@ struct CompActivityVisual : winrt::implements<
|
|
|
787
932
|
|
|
788
933
|
private:
|
|
789
934
|
winrt::Windows::Foundation::Numerics::float2 m_visualSize{0};
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
std::vector<
|
|
935
|
+
typename TTypeRedirects::SpriteVisual m_visual{nullptr};
|
|
936
|
+
typename TTypeRedirects::SpriteVisual m_contentVisual{nullptr};
|
|
937
|
+
std::vector<typename TTypeRedirects::CompositionSpriteShape> m_spriteVisuals;
|
|
793
938
|
|
|
794
939
|
// constants
|
|
795
940
|
float m_radiusSmall = 8.0f;
|
|
@@ -798,13 +943,19 @@ struct CompActivityVisual : winrt::implements<
|
|
|
798
943
|
float m_centerX = m_radiusSmall + m_ringWidth;
|
|
799
944
|
float m_centerY = m_radiusSmall + m_ringWidth;
|
|
800
945
|
};
|
|
946
|
+
using WindowsCompActivityVisual = CompActivityVisual<WindowsTypeRedirects>;
|
|
947
|
+
#ifdef USE_WINUI3
|
|
948
|
+
using MicrosoftCompActivityVisual = CompActivityVisual<MicrosoftTypeRedirects>;
|
|
949
|
+
#endif
|
|
801
950
|
|
|
802
|
-
|
|
803
|
-
|
|
951
|
+
template <typename TTypeRedirects>
|
|
952
|
+
struct CompCaretVisual
|
|
953
|
+
: winrt::implements<CompCaretVisual<TTypeRedirects>, winrt::Microsoft::ReactNative::Composition::ICaretVisual> {
|
|
954
|
+
CompCaretVisual(typename TTypeRedirects::Compositor const &compositor)
|
|
804
955
|
: m_compositor(compositor),
|
|
805
956
|
m_compVisual(compositor.CreateSpriteVisual()),
|
|
806
957
|
m_opacityAnimation(compositor.CreateScalarKeyFrameAnimation()) {
|
|
807
|
-
m_visual =
|
|
958
|
+
m_visual = CreateVisual();
|
|
808
959
|
|
|
809
960
|
// TODO should make the caret use an invert brush by default
|
|
810
961
|
m_compVisual.Brush(m_compositor.CreateColorBrush(winrt::Windows::UI::Colors::Black()));
|
|
@@ -821,10 +972,12 @@ struct CompCaretVisual : winrt::implements<CompCaretVisual, winrt::Microsoft::Re
|
|
|
821
972
|
m_opacityAnimation.InsertKeyFrame(stayVisFrame + fadeVisFrame + stayVisFrame, 0.0f);
|
|
822
973
|
m_opacityAnimation.InsertKeyFrame(1.0f, 1.0f, m_compositor.CreateLinearEasingFunction());
|
|
823
974
|
m_opacityAnimation.Duration(std::chrono::milliseconds{1000});
|
|
824
|
-
m_opacityAnimation.IterationBehavior(
|
|
975
|
+
m_opacityAnimation.IterationBehavior(TTypeRedirects::AnimationIterationBehavior::Count);
|
|
825
976
|
m_opacityAnimation.IterationCount(500);
|
|
826
977
|
}
|
|
827
978
|
|
|
979
|
+
winrt::Microsoft::ReactNative::Composition::IVisual CreateVisual() const noexcept;
|
|
980
|
+
|
|
828
981
|
winrt::Microsoft::ReactNative::Composition::IVisual InnerVisual() const noexcept {
|
|
829
982
|
return m_visual;
|
|
830
983
|
}
|
|
@@ -850,21 +1003,38 @@ struct CompCaretVisual : winrt::implements<CompCaretVisual, winrt::Microsoft::Re
|
|
|
850
1003
|
m_compVisual.StartAnimation(L"opacity", m_opacityAnimation);
|
|
851
1004
|
} else {
|
|
852
1005
|
m_compVisual.StopAnimation(L"opacity");
|
|
1006
|
+
m_compVisual.Opacity(0.0f);
|
|
853
1007
|
}
|
|
854
1008
|
}
|
|
855
1009
|
|
|
856
1010
|
private:
|
|
857
1011
|
bool m_isVisible{false};
|
|
858
|
-
|
|
1012
|
+
typename TTypeRedirects::SpriteVisual m_compVisual;
|
|
859
1013
|
winrt::Microsoft::ReactNative::Composition::IVisual m_visual;
|
|
860
|
-
|
|
861
|
-
|
|
1014
|
+
typename TTypeRedirects::ScalarKeyFrameAnimation m_opacityAnimation;
|
|
1015
|
+
typename TTypeRedirects::Compositor m_compositor{nullptr};
|
|
862
1016
|
};
|
|
863
1017
|
|
|
864
|
-
|
|
865
|
-
|
|
1018
|
+
winrt::Microsoft::ReactNative::Composition::IVisual CompCaretVisual<WindowsTypeRedirects>::CreateVisual()
|
|
1019
|
+
const noexcept {
|
|
1020
|
+
return winrt::make<Composition::WindowsCompSpriteVisual>(m_compVisual);
|
|
1021
|
+
}
|
|
1022
|
+
using WindowsCompCaretVisual = CompCaretVisual<WindowsTypeRedirects>;
|
|
1023
|
+
|
|
1024
|
+
#ifdef USE_WINUI3
|
|
1025
|
+
winrt::Microsoft::ReactNative::Composition::IVisual CompCaretVisual<MicrosoftTypeRedirects>::CreateVisual()
|
|
1026
|
+
const noexcept {
|
|
1027
|
+
return winrt::make<Composition::MicrosoftCompSpriteVisual>(m_compVisual);
|
|
1028
|
+
}
|
|
1029
|
+
using MicrosoftCompCaretVisual = CompCaretVisual<MicrosoftTypeRedirects>;
|
|
1030
|
+
#endif
|
|
1031
|
+
|
|
1032
|
+
template <typename TTypeRedirects>
|
|
1033
|
+
struct CompFocusVisual
|
|
1034
|
+
: winrt::implements<CompFocusVisual<TTypeRedirects>, winrt::Microsoft::ReactNative::Composition::IFocusVisual> {
|
|
1035
|
+
CompFocusVisual(typename TTypeRedirects::Compositor const &compositor)
|
|
866
1036
|
: m_compVisual(compositor.CreateSpriteVisual()), m_brush(compositor.CreateNineGridBrush()) {
|
|
867
|
-
m_visual =
|
|
1037
|
+
m_visual = CreateVisual();
|
|
868
1038
|
|
|
869
1039
|
m_compVisual.Opacity(1.0f);
|
|
870
1040
|
m_compVisual.RelativeSizeAdjustment({1, 1});
|
|
@@ -873,6 +1043,8 @@ struct CompFocusVisual : winrt::implements<CompFocusVisual, winrt::Microsoft::Re
|
|
|
873
1043
|
m_brush.IsCenterHollow(true);
|
|
874
1044
|
}
|
|
875
1045
|
|
|
1046
|
+
winrt::Microsoft::ReactNative::Composition::IVisual CreateVisual() noexcept;
|
|
1047
|
+
|
|
876
1048
|
winrt::Microsoft::ReactNative::Composition::IVisual InnerVisual() const noexcept {
|
|
877
1049
|
return m_visual;
|
|
878
1050
|
}
|
|
@@ -904,16 +1076,29 @@ struct CompFocusVisual : winrt::implements<CompFocusVisual, winrt::Microsoft::Re
|
|
|
904
1076
|
|
|
905
1077
|
private:
|
|
906
1078
|
float m_scaleFactor{0};
|
|
907
|
-
|
|
908
|
-
|
|
1079
|
+
typename TTypeRedirects::CompositionNineGridBrush m_brush;
|
|
1080
|
+
typename TTypeRedirects::SpriteVisual m_compVisual;
|
|
909
1081
|
winrt::Microsoft::ReactNative::Composition::IVisual m_visual{nullptr};
|
|
910
1082
|
};
|
|
911
1083
|
|
|
1084
|
+
winrt::Microsoft::ReactNative::Composition::IVisual CompFocusVisual<WindowsTypeRedirects>::CreateVisual() noexcept {
|
|
1085
|
+
return winrt::make<Composition::WindowsCompSpriteVisual>(m_compVisual);
|
|
1086
|
+
}
|
|
1087
|
+
using WindowsCompFocusVisual = CompFocusVisual<WindowsTypeRedirects>;
|
|
1088
|
+
|
|
1089
|
+
#ifdef USE_WINUI3
|
|
1090
|
+
winrt::Microsoft::ReactNative::Composition::IVisual CompFocusVisual<MicrosoftTypeRedirects>::CreateVisual() noexcept {
|
|
1091
|
+
return winrt::make<Composition::MicrosoftCompSpriteVisual>(m_compVisual);
|
|
1092
|
+
}
|
|
1093
|
+
using MicrosoftCompFocusVisual = CompFocusVisual<MicrosoftTypeRedirects>;
|
|
1094
|
+
#endif
|
|
1095
|
+
|
|
1096
|
+
template <typename TTypeRedirects>
|
|
912
1097
|
struct CompContext : winrt::implements<
|
|
913
|
-
CompContext
|
|
1098
|
+
CompContext<TTypeRedirects>,
|
|
914
1099
|
winrt::Microsoft::ReactNative::Composition::ICompositionContext,
|
|
915
1100
|
ICompositionContextInterop> {
|
|
916
|
-
CompContext(
|
|
1101
|
+
CompContext(typename TTypeRedirects::Compositor const &compositor) : m_compositor(compositor) {}
|
|
917
1102
|
|
|
918
1103
|
winrt::com_ptr<ID2D1Factory1> D2DFactory() noexcept {
|
|
919
1104
|
if (!m_d2dFactory) {
|
|
@@ -984,51 +1169,34 @@ struct CompContext : winrt::implements<
|
|
|
984
1169
|
return m_d2dDevice;
|
|
985
1170
|
}
|
|
986
1171
|
|
|
987
|
-
winrt::Microsoft::ReactNative::Composition::ISpriteVisual CreateSpriteVisual() noexcept
|
|
988
|
-
return winrt::make<Composition::CompSpriteVisual>(m_compositor.CreateSpriteVisual());
|
|
989
|
-
}
|
|
1172
|
+
winrt::Microsoft::ReactNative::Composition::ISpriteVisual CreateSpriteVisual() noexcept;
|
|
990
1173
|
|
|
991
|
-
winrt::Microsoft::ReactNative::Composition::IScrollVisual CreateScrollerVisual() noexcept
|
|
992
|
-
return winrt::make<Composition::CompScrollerVisual>(m_compositor.CreateSpriteVisual());
|
|
993
|
-
}
|
|
1174
|
+
winrt::Microsoft::ReactNative::Composition::IScrollVisual CreateScrollerVisual() noexcept;
|
|
994
1175
|
|
|
995
|
-
winrt::Microsoft::ReactNative::Composition::IActivityVisual CreateActivityVisual() noexcept
|
|
996
|
-
return winrt::make<Composition::CompActivityVisual>(m_compositor.CreateSpriteVisual());
|
|
997
|
-
}
|
|
1176
|
+
winrt::Microsoft::ReactNative::Composition::IActivityVisual CreateActivityVisual() noexcept;
|
|
998
1177
|
|
|
999
|
-
winrt::Microsoft::ReactNative::Composition::IDropShadow CreateDropShadow() noexcept
|
|
1000
|
-
return winrt::make<Composition::CompDropShadow>(m_compositor.CreateDropShadow());
|
|
1001
|
-
}
|
|
1178
|
+
winrt::Microsoft::ReactNative::Composition::IDropShadow CreateDropShadow() noexcept;
|
|
1002
1179
|
|
|
1003
|
-
winrt::Microsoft::ReactNative::Composition::IBrush CreateColorBrush(winrt::Windows::UI::Color color) noexcept
|
|
1004
|
-
return winrt::make<Composition::CompBrush>(m_compositor.CreateColorBrush(color));
|
|
1005
|
-
}
|
|
1180
|
+
winrt::Microsoft::ReactNative::Composition::IBrush CreateColorBrush(winrt::Windows::UI::Color color) noexcept;
|
|
1006
1181
|
|
|
1007
1182
|
winrt::Microsoft::ReactNative::Composition::IDrawingSurfaceBrush CreateDrawingSurfaceBrush(
|
|
1008
1183
|
winrt::Windows::Foundation::Size surfaceSize,
|
|
1009
1184
|
winrt::Windows::Graphics::DirectX::DirectXPixelFormat pixelFormat,
|
|
1010
|
-
winrt::Windows::Graphics::DirectX::DirectXAlphaMode alphaMode) noexcept
|
|
1011
|
-
return winrt::make<Composition::CompDrawingSurfaceBrush>(
|
|
1012
|
-
m_compositor, CompositionGraphicsDevice().CreateDrawingSurface(surfaceSize, pixelFormat, alphaMode));
|
|
1013
|
-
}
|
|
1185
|
+
winrt::Windows::Graphics::DirectX::DirectXAlphaMode alphaMode) noexcept;
|
|
1014
1186
|
|
|
1015
|
-
winrt::Microsoft::ReactNative::Composition::ICaretVisual CreateCaretVisual() noexcept
|
|
1016
|
-
return winrt::make<Composition::CompCaretVisual>(m_compositor);
|
|
1017
|
-
}
|
|
1187
|
+
winrt::Microsoft::ReactNative::Composition::ICaretVisual CreateCaretVisual() noexcept;
|
|
1018
1188
|
|
|
1019
|
-
winrt::Microsoft::ReactNative::Composition::IFocusVisual CreateFocusVisual() noexcept
|
|
1020
|
-
return winrt::make<Composition::CompFocusVisual>(m_compositor);
|
|
1021
|
-
}
|
|
1189
|
+
winrt::Microsoft::ReactNative::Composition::IFocusVisual CreateFocusVisual() noexcept;
|
|
1022
1190
|
|
|
1023
|
-
|
|
1191
|
+
typename TTypeRedirects::CompositionGraphicsDevice CompositionGraphicsDevice() noexcept {
|
|
1024
1192
|
if (!m_compositionGraphicsDevice) {
|
|
1025
1193
|
// To create a composition graphics device, we need to QI for another interface
|
|
1026
1194
|
|
|
1027
|
-
winrt::com_ptr<
|
|
1028
|
-
m_compositor.as<
|
|
1195
|
+
winrt::com_ptr<typename TTypeRedirects::ICompositorInterop> compositorInterop{
|
|
1196
|
+
m_compositor.as<typename TTypeRedirects::ICompositorInterop>()};
|
|
1029
1197
|
|
|
1030
1198
|
// Create a graphics device backed by our D3D device
|
|
1031
|
-
winrt::com_ptr<
|
|
1199
|
+
winrt::com_ptr<typename TTypeRedirects::ICompositionGraphicsDevice> compositionGraphicsDeviceIface;
|
|
1032
1200
|
winrt::check_hresult(
|
|
1033
1201
|
compositorInterop->CreateGraphicsDevice(D2DDevice().get(), compositionGraphicsDeviceIface.put()));
|
|
1034
1202
|
|
|
@@ -1037,64 +1205,209 @@ struct CompContext : winrt::implements<
|
|
|
1037
1205
|
return m_compositionGraphicsDevice;
|
|
1038
1206
|
}
|
|
1039
1207
|
|
|
1040
|
-
|
|
1208
|
+
typename TTypeRedirects::Compositor InnerCompositor() noexcept {
|
|
1041
1209
|
return m_compositor;
|
|
1042
1210
|
}
|
|
1043
1211
|
|
|
1044
1212
|
private:
|
|
1045
|
-
|
|
1213
|
+
typename TTypeRedirects::Compositor m_compositor{nullptr};
|
|
1046
1214
|
winrt::com_ptr<ID2D1Factory1> m_d2dFactory;
|
|
1047
1215
|
winrt::com_ptr<ID3D11Device> m_d3dDevice;
|
|
1048
1216
|
winrt::com_ptr<ID2D1Device> m_d2dDevice;
|
|
1049
|
-
|
|
1217
|
+
typename TTypeRedirects::CompositionGraphicsDevice m_compositionGraphicsDevice{nullptr};
|
|
1050
1218
|
winrt::com_ptr<ID3D11DeviceContext> m_d3dDeviceContext;
|
|
1051
1219
|
};
|
|
1052
1220
|
|
|
1221
|
+
winrt::Microsoft::ReactNative::Composition::ISpriteVisual
|
|
1222
|
+
CompContext<WindowsTypeRedirects>::CreateSpriteVisual() noexcept {
|
|
1223
|
+
return winrt::make<Composition::WindowsCompSpriteVisual>(m_compositor.CreateSpriteVisual());
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
winrt::Microsoft::ReactNative::Composition::IScrollVisual
|
|
1227
|
+
CompContext<WindowsTypeRedirects>::CreateScrollerVisual() noexcept {
|
|
1228
|
+
return winrt::make<Composition::WindowsCompScrollerVisual>(m_compositor.CreateSpriteVisual());
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
winrt::Microsoft::ReactNative::Composition::IActivityVisual
|
|
1232
|
+
CompContext<WindowsTypeRedirects>::CreateActivityVisual() noexcept {
|
|
1233
|
+
return winrt::make<Composition::WindowsCompActivityVisual>(m_compositor.CreateSpriteVisual());
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
winrt::Microsoft::ReactNative::Composition::IDropShadow CompContext<WindowsTypeRedirects>::CreateDropShadow() noexcept {
|
|
1237
|
+
return winrt::make<Composition::WindowsCompDropShadow>(m_compositor.CreateDropShadow());
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
winrt::Microsoft::ReactNative::Composition::IBrush CompContext<WindowsTypeRedirects>::CreateColorBrush(
|
|
1241
|
+
winrt::Windows::UI::Color color) noexcept {
|
|
1242
|
+
return winrt::make<Composition::WindowsCompBrush>(m_compositor.CreateColorBrush(color));
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
winrt::Microsoft::ReactNative::Composition::IDrawingSurfaceBrush
|
|
1246
|
+
CompContext<WindowsTypeRedirects>::CreateDrawingSurfaceBrush(
|
|
1247
|
+
winrt::Windows::Foundation::Size surfaceSize,
|
|
1248
|
+
winrt::Windows::Graphics::DirectX::DirectXPixelFormat pixelFormat,
|
|
1249
|
+
winrt::Windows::Graphics::DirectX::DirectXAlphaMode alphaMode) noexcept {
|
|
1250
|
+
return winrt::make<Composition::WindowsCompDrawingSurfaceBrush>(
|
|
1251
|
+
m_compositor, CompositionGraphicsDevice().CreateDrawingSurface(surfaceSize, pixelFormat, alphaMode));
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
winrt::Microsoft::ReactNative::Composition::ICaretVisual
|
|
1255
|
+
CompContext<WindowsTypeRedirects>::CreateCaretVisual() noexcept {
|
|
1256
|
+
return winrt::make<Composition::WindowsCompCaretVisual>(m_compositor);
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
winrt::Microsoft::ReactNative::Composition::IFocusVisual
|
|
1260
|
+
CompContext<WindowsTypeRedirects>::CreateFocusVisual() noexcept {
|
|
1261
|
+
return winrt::make<Composition::WindowsCompFocusVisual>(m_compositor);
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1264
|
+
using WindowsCompContext = CompContext<WindowsTypeRedirects>;
|
|
1265
|
+
|
|
1266
|
+
#ifdef USE_WINUI3
|
|
1267
|
+
winrt::Microsoft::ReactNative::Composition::ISpriteVisual
|
|
1268
|
+
CompContext<MicrosoftTypeRedirects>::CreateSpriteVisual() noexcept {
|
|
1269
|
+
return winrt::make<Composition::MicrosoftCompSpriteVisual>(m_compositor.CreateSpriteVisual());
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
winrt::Microsoft::ReactNative::Composition::IScrollVisual
|
|
1273
|
+
CompContext<MicrosoftTypeRedirects>::CreateScrollerVisual() noexcept {
|
|
1274
|
+
return winrt::make<Composition::MicrosoftCompScrollerVisual>(m_compositor.CreateSpriteVisual());
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1277
|
+
winrt::Microsoft::ReactNative::Composition::IActivityVisual
|
|
1278
|
+
CompContext<MicrosoftTypeRedirects>::CreateActivityVisual() noexcept {
|
|
1279
|
+
return winrt::make<Composition::MicrosoftCompActivityVisual>(m_compositor.CreateSpriteVisual());
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
winrt::Microsoft::ReactNative::Composition::IDropShadow
|
|
1283
|
+
CompContext<MicrosoftTypeRedirects>::CreateDropShadow() noexcept {
|
|
1284
|
+
return winrt::make<Composition::MicrosoftCompDropShadow>(m_compositor.CreateDropShadow());
|
|
1285
|
+
}
|
|
1286
|
+
|
|
1287
|
+
winrt::Microsoft::ReactNative::Composition::IBrush CompContext<MicrosoftTypeRedirects>::CreateColorBrush(
|
|
1288
|
+
winrt::Windows::UI::Color color) noexcept {
|
|
1289
|
+
return winrt::make<Composition::MicrosoftCompBrush>(m_compositor.CreateColorBrush(color));
|
|
1290
|
+
}
|
|
1291
|
+
|
|
1292
|
+
winrt::Microsoft::ReactNative::Composition::IDrawingSurfaceBrush
|
|
1293
|
+
CompContext<MicrosoftTypeRedirects>::CreateDrawingSurfaceBrush(
|
|
1294
|
+
winrt::Windows::Foundation::Size surfaceSize,
|
|
1295
|
+
winrt::Windows::Graphics::DirectX::DirectXPixelFormat pixelFormat,
|
|
1296
|
+
winrt::Windows::Graphics::DirectX::DirectXAlphaMode alphaMode) noexcept {
|
|
1297
|
+
return winrt::make<Composition::MicrosoftCompDrawingSurfaceBrush>(
|
|
1298
|
+
m_compositor,
|
|
1299
|
+
CompositionGraphicsDevice().CreateDrawingSurface(
|
|
1300
|
+
surfaceSize,
|
|
1301
|
+
static_cast<winrt::Microsoft::Graphics::DirectX::DirectXPixelFormat>(pixelFormat),
|
|
1302
|
+
static_cast<winrt::Microsoft::Graphics::DirectX::DirectXAlphaMode>(alphaMode)));
|
|
1303
|
+
}
|
|
1304
|
+
|
|
1305
|
+
winrt::Microsoft::ReactNative::Composition::ICaretVisual
|
|
1306
|
+
CompContext<MicrosoftTypeRedirects>::CreateCaretVisual() noexcept {
|
|
1307
|
+
return winrt::make<Composition::MicrosoftCompCaretVisual>(m_compositor);
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
winrt::Microsoft::ReactNative::Composition::IFocusVisual
|
|
1311
|
+
CompContext<MicrosoftTypeRedirects>::CreateFocusVisual() noexcept {
|
|
1312
|
+
return winrt::make<Composition::MicrosoftCompFocusVisual>(m_compositor);
|
|
1313
|
+
}
|
|
1314
|
+
using MicrosoftCompContext = CompContext<MicrosoftTypeRedirects>;
|
|
1315
|
+
#endif
|
|
1316
|
+
|
|
1053
1317
|
} // namespace Microsoft::ReactNative::Composition
|
|
1054
1318
|
|
|
1055
1319
|
namespace winrt::Microsoft::ReactNative::Composition::implementation {
|
|
1056
1320
|
|
|
1057
|
-
ICompositionContext
|
|
1321
|
+
ICompositionContext WindowsCompositionContextHelper::CreateContext(
|
|
1058
1322
|
winrt::Windows::UI::Composition::Compositor const &compositor) noexcept {
|
|
1059
|
-
return winrt::make<::Microsoft::ReactNative::Composition::
|
|
1323
|
+
return winrt::make<::Microsoft::ReactNative::Composition::WindowsCompContext>(compositor);
|
|
1060
1324
|
}
|
|
1061
1325
|
|
|
1062
|
-
IVisual
|
|
1326
|
+
IVisual WindowsCompositionContextHelper::CreateVisual(winrt::Windows::UI::Composition::Visual const &visual) noexcept {
|
|
1063
1327
|
if (auto spriteVisual = visual.try_as<winrt::Windows::UI::Composition::SpriteVisual>())
|
|
1064
|
-
return winrt::make<::Microsoft::ReactNative::Composition::
|
|
1065
|
-
return winrt::make<::Microsoft::ReactNative::Composition::
|
|
1328
|
+
return winrt::make<::Microsoft::ReactNative::Composition::WindowsCompSpriteVisual>(spriteVisual);
|
|
1329
|
+
return winrt::make<::Microsoft::ReactNative::Composition::WindowsCompVisual>(visual);
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
winrt::Windows::UI::Composition::Compositor WindowsCompositionContextHelper::InnerCompositor(
|
|
1333
|
+
ICompositionContext context) noexcept {
|
|
1334
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::WindowsCompContext> s;
|
|
1335
|
+
context.as(s);
|
|
1336
|
+
return s ? s->InnerCompositor() : nullptr;
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
winrt::Windows::UI::Composition::Visual WindowsCompositionContextHelper::InnerVisual(IVisual visual) noexcept {
|
|
1340
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::IWindowsCompositionVisual> s;
|
|
1341
|
+
visual.as(s);
|
|
1342
|
+
return s ? s->InnerVisual() : nullptr;
|
|
1343
|
+
}
|
|
1344
|
+
|
|
1345
|
+
winrt::Windows::UI::Composition::DropShadow WindowsCompositionContextHelper::InnerDropShadow(
|
|
1346
|
+
IDropShadow shadow) noexcept {
|
|
1347
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::IWindowsCompositionDropShadow> s;
|
|
1348
|
+
shadow.as(s);
|
|
1349
|
+
return s ? s->InnerShadow() : nullptr;
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
winrt::Windows::UI::Composition::CompositionBrush WindowsCompositionContextHelper::InnerBrush(IBrush brush) noexcept {
|
|
1353
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::IWindowsCompositionBrush> s;
|
|
1354
|
+
brush.as(s);
|
|
1355
|
+
return s ? s->InnerBrush() : nullptr;
|
|
1356
|
+
}
|
|
1357
|
+
|
|
1358
|
+
winrt::Windows::UI::Composition::ICompositionSurface WindowsCompositionContextHelper::InnerSurface(
|
|
1359
|
+
IDrawingSurfaceBrush surface) noexcept {
|
|
1360
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::IWindowsCompositionDrawingSurfaceInner> s;
|
|
1361
|
+
surface.as(s);
|
|
1362
|
+
return s ? s->Inner() : nullptr;
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
#ifdef USE_WINUI3
|
|
1366
|
+
ICompositionContext MicrosoftCompositionContextHelper::CreateContext(
|
|
1367
|
+
winrt::Microsoft::UI::Composition::Compositor const &compositor) noexcept {
|
|
1368
|
+
return winrt::make<::Microsoft::ReactNative::Composition::MicrosoftCompContext>(compositor);
|
|
1066
1369
|
}
|
|
1067
1370
|
|
|
1068
|
-
|
|
1371
|
+
IVisual MicrosoftCompositionContextHelper::CreateVisual(
|
|
1372
|
+
winrt::Microsoft::UI::Composition::Visual const &visual) noexcept {
|
|
1373
|
+
if (auto spriteVisual = visual.try_as<winrt::Microsoft::UI::Composition::SpriteVisual>())
|
|
1374
|
+
return winrt::make<::Microsoft::ReactNative::Composition::MicrosoftCompSpriteVisual>(spriteVisual);
|
|
1375
|
+
return winrt::make<::Microsoft::ReactNative::Composition::MicrosoftCompVisual>(visual);
|
|
1376
|
+
}
|
|
1377
|
+
|
|
1378
|
+
winrt::Microsoft::UI::Composition::Compositor MicrosoftCompositionContextHelper::InnerCompositor(
|
|
1069
1379
|
ICompositionContext context) noexcept {
|
|
1070
|
-
winrt::com_ptr<::Microsoft::ReactNative::Composition::
|
|
1380
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::MicrosoftCompContext> s;
|
|
1071
1381
|
context.as(s);
|
|
1072
1382
|
return s ? s->InnerCompositor() : nullptr;
|
|
1073
1383
|
}
|
|
1074
1384
|
|
|
1075
|
-
winrt::
|
|
1076
|
-
winrt::com_ptr<::Microsoft::ReactNative::Composition::
|
|
1385
|
+
winrt::Microsoft::UI::Composition::Visual MicrosoftCompositionContextHelper::InnerVisual(IVisual visual) noexcept {
|
|
1386
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::IMicrosoftCompositionVisual> s;
|
|
1077
1387
|
visual.as(s);
|
|
1078
1388
|
return s ? s->InnerVisual() : nullptr;
|
|
1079
1389
|
}
|
|
1080
1390
|
|
|
1081
|
-
winrt::
|
|
1082
|
-
|
|
1391
|
+
winrt::Microsoft::UI::Composition::DropShadow MicrosoftCompositionContextHelper::InnerDropShadow(
|
|
1392
|
+
IDropShadow shadow) noexcept {
|
|
1393
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::IMicrosoftCompositionDropShadow> s;
|
|
1083
1394
|
shadow.as(s);
|
|
1084
1395
|
return s ? s->InnerShadow() : nullptr;
|
|
1085
1396
|
}
|
|
1086
1397
|
|
|
1087
|
-
winrt::
|
|
1088
|
-
|
|
1398
|
+
winrt::Microsoft::UI::Composition::CompositionBrush MicrosoftCompositionContextHelper::InnerBrush(
|
|
1399
|
+
IBrush brush) noexcept {
|
|
1400
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::IMicrosoftCompositionBrush> s;
|
|
1089
1401
|
brush.as(s);
|
|
1090
1402
|
return s ? s->InnerBrush() : nullptr;
|
|
1091
1403
|
}
|
|
1092
1404
|
|
|
1093
|
-
winrt::
|
|
1405
|
+
winrt::Microsoft::UI::Composition::ICompositionSurface MicrosoftCompositionContextHelper::InnerSurface(
|
|
1094
1406
|
IDrawingSurfaceBrush surface) noexcept {
|
|
1095
|
-
winrt::com_ptr<::Microsoft::ReactNative::Composition::
|
|
1407
|
+
winrt::com_ptr<::Microsoft::ReactNative::Composition::IMicrosoftCompositionDrawingSurfaceInner> s;
|
|
1096
1408
|
surface.as(s);
|
|
1097
1409
|
return s ? s->Inner() : nullptr;
|
|
1098
1410
|
}
|
|
1411
|
+
#endif
|
|
1099
1412
|
|
|
1100
1413
|
} // namespace winrt::Microsoft::ReactNative::Composition::implementation
|