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.
Files changed (46) hide show
  1. package/Microsoft.ReactNative/CompositionContext.idl +31 -8
  2. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +495 -182
  3. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.h +37 -5
  4. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper_emptyimpl.cpp +48 -9
  5. package/Microsoft.ReactNative/Fabric/Composition/CompositionHelpers.h +34 -8
  6. package/Microsoft.ReactNative/Fabric/Composition/CompositionHwndHost.cpp +3 -2
  7. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +16 -17
  8. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +1 -0
  9. package/Microsoft.ReactNative/Modules/Animated/NativeAnimatedNodeManager.cpp +1 -2
  10. package/Microsoft.ReactNative/Modules/Animated/PropsAnimatedNode.cpp +3 -4
  11. package/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp +2 -0
  12. package/Mso/src/dispatchQueue/uiScheduler_winrt.cpp +121 -44
  13. package/PropertySheets/External/Microsoft.ReactNative.Composition.Common.props +12 -0
  14. package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.props +24 -0
  15. package/PropertySheets/External/Microsoft.ReactNative.Composition.CppApp.targets +20 -0
  16. package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.props +14 -0
  17. package/PropertySheets/External/Microsoft.ReactNative.Composition.Package.targets +18 -0
  18. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +1 -1
  19. package/PropertySheets/Generated/PackageVersion.g.props +2 -2
  20. package/package.json +2 -2
  21. package/templates/cpp-app/metro.config.js +51 -0
  22. package/templates/cpp-app/template.config.js +118 -0
  23. package/templates/cpp-app/windows/ExperimentalFeatures.props +12 -0
  24. package/templates/cpp-app/windows/MyApp/MyApp.cpp +284 -0
  25. package/templates/cpp-app/windows/MyApp/MyApp.h +3 -0
  26. package/templates/cpp-app/windows/MyApp/MyApp.ico +0 -0
  27. package/templates/cpp-app/windows/MyApp/MyApp.rc +0 -0
  28. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj +142 -0
  29. package/templates/cpp-app/windows/MyApp/MyApp.vcxproj.filters +55 -0
  30. package/templates/cpp-app/windows/MyApp/_gitignore +1 -0
  31. package/templates/cpp-app/windows/MyApp/pch.cpp +1 -0
  32. package/templates/cpp-app/windows/MyApp/pch.h +35 -0
  33. package/templates/cpp-app/windows/MyApp/resource.h +18 -0
  34. package/templates/cpp-app/windows/MyApp/small.ico +0 -0
  35. package/templates/cpp-app/windows/MyApp/targetver.h +8 -0
  36. package/templates/cpp-app/windows/MyApp.Package/Images/LockScreenLogo.scale-200.png +0 -0
  37. package/templates/cpp-app/windows/MyApp.Package/Images/SplashScreen.scale-200.png +0 -0
  38. package/templates/cpp-app/windows/MyApp.Package/Images/Square150x150Logo.scale-200.png +0 -0
  39. package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.scale-200.png +0 -0
  40. package/templates/cpp-app/windows/MyApp.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png +0 -0
  41. package/templates/cpp-app/windows/MyApp.Package/Images/StoreLogo.png +0 -0
  42. package/templates/cpp-app/windows/MyApp.Package/Images/Wide310x150Logo.scale-200.png +0 -0
  43. package/templates/cpp-app/windows/MyApp.Package/MyApp.Package.wapproj +78 -0
  44. package/templates/cpp-app/windows/MyApp.Package/Package.appxmanifest +49 -0
  45. package/templates/cpp-app/windows/MyApp.sln +176 -0
  46. 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.CompositionContextHelper.g.cpp")
5
- #include "Composition.CompositionContextHelper.g.cpp"
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
- struct CompDropShadow
39
- : public winrt::
40
- implements<CompDropShadow, winrt::Microsoft::ReactNative::Composition::IDropShadow, ICompositionDropShadow> {
41
- CompDropShadow(winrt::Windows::UI::Composition::DropShadow const &shadow) : m_shadow(shadow) {}
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
- winrt::Windows::UI::Composition::DropShadow InnerShadow() const noexcept override {
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
- winrt::Windows::UI::Composition::DropShadow m_shadow;
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
- struct CompBrush
68
- : public winrt::implements<CompBrush, winrt::Microsoft::ReactNative::Composition::IBrush, ICompositionBrush> {
69
- CompBrush(winrt::Windows::UI::Composition::CompositionBrush const &brush) : m_brush(brush) {}
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
- winrt::Windows::UI::Composition::CompositionBrush InnerBrush() const noexcept {
204
+ typename TTypeRedirects::CompositionBrush InnerBrush() const noexcept {
72
205
  return m_brush;
73
206
  }
74
207
 
75
208
  private:
76
- winrt::Windows::UI::Composition::CompositionBrush m_brush;
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
- Microsoft::ReactNative::Composition::ICompositionBrush,
221
+ typename TTypeRedirects::IInnerCompositionBrush,
84
222
  ICompositionDrawingSurfaceInterop,
85
- ICompositionDrawingSurfaceInner> {
223
+ typename TTypeRedirects::IInnerCompositionDrawingSurface> {
86
224
  CompDrawingSurfaceBrush(
87
- const winrt::Windows::UI::Composition::Compositor &compositor,
88
- winrt::Windows::UI::Composition::CompositionDrawingSurface const &drawingSurface)
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
- winrt::Windows::UI::Composition::ICompositionSurface Inner() const noexcept {
102
- winrt::Windows::UI::Composition::ICompositionSurface surface;
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
- winrt::Windows::UI::Composition::CompositionBrush InnerBrush() const noexcept {
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
- winrt::Windows::UI::Composition::CompositionStretch::None) ==
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
- winrt::Windows::UI::Composition::CompositionStretch::Fill) ==
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
- winrt::Windows::UI::Composition::CompositionStretch::Uniform) ==
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
- winrt::Windows::UI::Composition::CompositionStretch::UniformToFill) ==
271
+ TTypeRedirects::CompositionStretch::UniformToFill) ==
134
272
  winrt::Microsoft::ReactNative::Composition::CompositionStretch::UniformToFill);
135
273
 
136
- m_brush.Stretch(static_cast<winrt::Windows::UI::Composition::CompositionStretch>(mode));
274
+ m_brush.Stretch(static_cast<typename TTypeRedirects::CompositionStretch>(mode));
137
275
  }
138
276
 
139
277
  private:
140
- winrt::Windows::UI::Composition::CompositionSurfaceBrush m_brush;
141
- winrt::com_ptr<ABI::Windows::UI::Composition::ICompositionDrawingSurfaceInterop> m_drawingSurfaceInterop;
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
- ICompositionVisual,
290
+ typename TTypeRedirects::IInnerCompositionVisual,
148
291
  IVisualInterop> {
149
- CompVisual(winrt::Windows::UI::Composition::Visual const &visual) : m_visual(visual) {}
292
+ CompVisual(typename TTypeRedirects::Visual const &visual) : m_visual(visual) {}
150
293
 
151
- winrt::Windows::UI::Composition::Visual InnerVisual() const noexcept override {
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<winrt::Windows::UI::Composition::ContainerVisual>().Children();
157
- auto compVisual = winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerVisual(visual);
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 = winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerVisual(visual);
170
- auto containerChildren = m_visual.as<winrt::Windows::UI::Composition::ContainerVisual>().Children();
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<winrt::Windows::UI::Composition::ContainerVisual>().Children();
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 winrt::Microsoft::ReactNative::Composition::implementation::CompositionContextHelper::CreateVisual(
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 = winrt::Windows::UI::Composition::CompositionPath(geometry);
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<winrt::Windows::UI::Composition::CompositionBackfaceVisibility>(value));
384
+ m_visual.BackfaceVisibility(static_cast<typename TTypeRedirects::CompositionBackfaceVisibility>(value));
243
385
  }
244
386
 
245
387
  private:
246
- winrt::Windows::UI::Composition::Visual m_visual;
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
- ICompositionVisual,
400
+ typename TTypeRedirects::IInnerCompositionVisual,
254
401
  IVisualInterop> {
255
- CompSpriteVisual(winrt::Windows::UI::Composition::SpriteVisual const &visual) : m_visual(visual) {}
402
+ CompSpriteVisual(typename TTypeRedirects::SpriteVisual const &visual) : m_visual(visual) {}
256
403
 
257
- winrt::Windows::UI::Composition::Visual InnerVisual() const noexcept override {
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 = winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerVisual(visual);
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 = winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerVisual(visual);
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<winrt::Windows::UI::Composition::ContainerVisual>().Children();
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 winrt::Microsoft::ReactNative::Composition::implementation::CompositionContextHelper::CreateVisual(
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(winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerBrush(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<winrt::Windows::UI::Composition::CompositionBackfaceVisibility>(value));
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 = winrt::Windows::UI::Composition::CompositionPath(geometry);
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(winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerDropShadow(shadow));
502
+ m_visual.Shadow(TTypeRedirects::CompositionContextHelper::InnerDropShadow(shadow));
357
503
  }
358
504
 
359
505
  private:
360
- winrt::Windows::UI::Composition::SpriteVisual m_visual;
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
- ICompositionVisual,
531
+ typename TTypeRedirects::IInnerCompositionVisual,
381
532
  IVisualInterop> {
382
- struct ScrollInteractionTrackerOwner : public winrt::implements<
383
- ScrollInteractionTrackerOwner,
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
- winrt::Windows::UI::Composition::Interactions::InteractionTracker sender,
389
- winrt::Windows::UI::Composition::Interactions::InteractionTrackerCustomAnimationStateEnteredArgs
390
- args) noexcept {}
538
+ typename TTypeRedirects::InteractionTracker sender,
539
+ typename TTypeRedirects::InteractionTrackerCustomAnimationStateEnteredArgs args) noexcept {}
391
540
  void IdleStateEntered(
392
- winrt::Windows::UI::Composition::Interactions::InteractionTracker sender,
393
- winrt::Windows::UI::Composition::Interactions::InteractionTrackerIdleStateEnteredArgs args) noexcept {}
541
+ typename TTypeRedirects::InteractionTracker sender,
542
+ typename TTypeRedirects::InteractionTrackerIdleStateEnteredArgs args) noexcept {}
394
543
  void InertiaStateEntered(
395
- winrt::Windows::UI::Composition::Interactions::InteractionTracker sender,
396
- winrt::Windows::UI::Composition::Interactions::InteractionTrackerInertiaStateEnteredArgs args) noexcept {}
544
+ typename TTypeRedirects::InteractionTracker sender,
545
+ typename TTypeRedirects::InteractionTrackerInertiaStateEnteredArgs args) noexcept {}
397
546
  void InteractingStateEntered(
398
- winrt::Windows::UI::Composition::Interactions::InteractionTracker sender,
399
- winrt::Windows::UI::Composition::Interactions::InteractionTrackerInteractingStateEnteredArgs args) noexcept {}
547
+ typename TTypeRedirects::InteractionTracker sender,
548
+ typename TTypeRedirects::InteractionTrackerInteractingStateEnteredArgs args) noexcept {}
400
549
  void RequestIgnored(
401
- winrt::Windows::UI::Composition::Interactions::InteractionTracker sender,
402
- winrt::Windows::UI::Composition::Interactions::InteractionTrackerRequestIgnoredArgs args) noexcept {}
550
+ typename TTypeRedirects::InteractionTracker sender,
551
+ typename TTypeRedirects::InteractionTrackerRequestIgnoredArgs args) noexcept {}
403
552
  void ValuesChanged(
404
- winrt::Windows::UI::Composition::Interactions::InteractionTracker sender,
405
- winrt::Windows::UI::Composition::Interactions::InteractionTrackerValuesChangedArgs args) noexcept {
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(winrt::Windows::UI::Composition::SpriteVisual const &visual) : m_visual(visual) {
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 = winrt::Windows::UI::Composition::Interactions::InteractionTracker::CreateWithOwner(
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
- winrt::Windows::UI::Composition::Interactions::InteractionSourceMode::EnabledWithInertia);
436
- m_visualInteractionSource.PositionYSourceMode(
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
- winrt::Windows::UI::Composition::Interactions::VisualInteractionSourceRedirectionMode::
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
- winrt::Windows::UI::Composition::Visual InnerVisual() const noexcept {
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 = winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerVisual(visual);
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 = winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerVisual(visual);
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<winrt::Windows::UI::Composition::ContainerVisual>().Children();
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 winrt::Microsoft::ReactNative::Composition::implementation::CompositionContextHelper::CreateVisual(
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(winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerBrush(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<winrt::Windows::UI::Composition::CompositionBackfaceVisibility>(value));
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 = winrt::Windows::UI::Composition::CompositionPath(geometry);
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(winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerDropShadow(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
- winrt::Windows::UI::Composition::SpriteVisual m_visual{nullptr};
610
- winrt::Windows::UI::Composition::SpriteVisual m_contentVisual{nullptr};
611
- winrt::Windows::UI::Composition::Interactions::InteractionTracker m_interactionTracker{nullptr};
612
- winrt::Windows::UI::Composition::Interactions::VisualInteractionSource m_visualInteractionSource{nullptr};
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
- ICompositionVisual,
767
+ typename TTypeRedirects::IInnerCompositionVisual,
620
768
  IVisualInterop> {
621
- CompActivityVisual(winrt::Windows::UI::Composition::SpriteVisual const &visual) : m_visual(visual) {
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
- winrt::Windows::UI::Composition::ShapeVisual createLoadingCircle(
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(winrt::Windows::UI::Composition::AnimationIterationBehavior::Forever);
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(winrt::Windows::UI::Composition::AnimationDirection::Normal);
673
- animation.IterationBehavior(winrt::Windows::UI::Composition::AnimationIterationBehavior::Forever);
818
+ animation.Direction(TTypeRedirects::AnimationDirection::Normal);
819
+ animation.IterationBehavior(TTypeRedirects::AnimationIterationBehavior::Forever);
674
820
  animation.DelayTime(std::chrono::milliseconds(delay));
675
- animation.DelayBehavior(winrt::Windows::UI::Composition::AnimationDelayBehavior::SetInitialValueAfterDelay);
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
- winrt::Windows::UI::Composition::Visual InnerVisual() const noexcept {
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 = winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerVisual(visual);
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 = winrt::Microsoft::ReactNative::Composition::CompositionContextHelper::InnerVisual(visual);
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<winrt::Windows::UI::Composition::ContainerVisual>().Children();
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 winrt::Microsoft::ReactNative::Composition::implementation::CompositionContextHelper::CreateVisual(
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<winrt::Windows::UI::Composition::CompositionBackfaceVisibility>(value));
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 = winrt::Windows::UI::Composition::CompositionPath(geometry);
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
- winrt::Windows::UI::Composition::SpriteVisual m_visual{nullptr};
791
- winrt::Windows::UI::Composition::SpriteVisual m_contentVisual{nullptr};
792
- std::vector<winrt::Windows::UI::Composition::CompositionSpriteShape> m_spriteVisuals;
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
- struct CompCaretVisual : winrt::implements<CompCaretVisual, winrt::Microsoft::ReactNative::Composition::ICaretVisual> {
803
- CompCaretVisual(winrt::Windows::UI::Composition::Compositor const &compositor)
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 = winrt::make<Composition::CompSpriteVisual>(m_compVisual);
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(winrt::Windows::UI::Composition::AnimationIterationBehavior::Count);
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
- winrt::Windows::UI::Composition::SpriteVisual m_compVisual;
1012
+ typename TTypeRedirects::SpriteVisual m_compVisual;
859
1013
  winrt::Microsoft::ReactNative::Composition::IVisual m_visual;
860
- winrt::Windows::UI::Composition::ScalarKeyFrameAnimation m_opacityAnimation;
861
- winrt::Windows::UI::Composition::Compositor m_compositor{nullptr};
1014
+ typename TTypeRedirects::ScalarKeyFrameAnimation m_opacityAnimation;
1015
+ typename TTypeRedirects::Compositor m_compositor{nullptr};
862
1016
  };
863
1017
 
864
- struct CompFocusVisual : winrt::implements<CompFocusVisual, winrt::Microsoft::ReactNative::Composition::IFocusVisual> {
865
- CompFocusVisual(winrt::Windows::UI::Composition::Compositor const &compositor)
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 = winrt::make<Composition::CompSpriteVisual>(m_compVisual);
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
- const winrt::Windows::UI::Composition::CompositionNineGridBrush m_brush;
908
- const winrt::Windows::UI::Composition::SpriteVisual m_compVisual;
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(winrt::Windows::UI::Composition::Compositor const &compositor) : m_compositor(compositor) {}
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
- winrt::Windows::UI::Composition::CompositionGraphicsDevice CompositionGraphicsDevice() noexcept {
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<ABI::Windows::UI::Composition::ICompositorInterop> compositorInterop{
1028
- m_compositor.as<ABI::Windows::UI::Composition::ICompositorInterop>()};
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<ABI::Windows::UI::Composition::ICompositionGraphicsDevice> compositionGraphicsDeviceIface;
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
- winrt::Windows::UI::Composition::Compositor InnerCompositor() noexcept {
1208
+ typename TTypeRedirects::Compositor InnerCompositor() noexcept {
1041
1209
  return m_compositor;
1042
1210
  }
1043
1211
 
1044
1212
  private:
1045
- winrt::Windows::UI::Composition::Compositor m_compositor{nullptr};
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
- winrt::Windows::UI::Composition::CompositionGraphicsDevice m_compositionGraphicsDevice{nullptr};
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 CompositionContextHelper::CreateContext(
1321
+ ICompositionContext WindowsCompositionContextHelper::CreateContext(
1058
1322
  winrt::Windows::UI::Composition::Compositor const &compositor) noexcept {
1059
- return winrt::make<::Microsoft::ReactNative::Composition::CompContext>(compositor);
1323
+ return winrt::make<::Microsoft::ReactNative::Composition::WindowsCompContext>(compositor);
1060
1324
  }
1061
1325
 
1062
- IVisual CompositionContextHelper::CreateVisual(winrt::Windows::UI::Composition::Visual const &visual) noexcept {
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::CompSpriteVisual>(spriteVisual);
1065
- return winrt::make<::Microsoft::ReactNative::Composition::CompVisual>(visual);
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
- winrt::Windows::UI::Composition::Compositor CompositionContextHelper::InnerCompositor(
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::CompContext> s;
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::Windows::UI::Composition::Visual CompositionContextHelper::InnerVisual(IVisual visual) noexcept {
1076
- winrt::com_ptr<::Microsoft::ReactNative::Composition::ICompositionVisual> s;
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::Windows::UI::Composition::DropShadow CompositionContextHelper::InnerDropShadow(IDropShadow shadow) noexcept {
1082
- winrt::com_ptr<::Microsoft::ReactNative::Composition::ICompositionDropShadow> s;
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::Windows::UI::Composition::CompositionBrush CompositionContextHelper::InnerBrush(IBrush brush) noexcept {
1088
- winrt::com_ptr<::Microsoft::ReactNative::Composition::ICompositionBrush> s;
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::Windows::UI::Composition::ICompositionSurface CompositionContextHelper::InnerSurface(
1405
+ winrt::Microsoft::UI::Composition::ICompositionSurface MicrosoftCompositionContextHelper::InnerSurface(
1094
1406
  IDrawingSurfaceBrush surface) noexcept {
1095
- winrt::com_ptr<::Microsoft::ReactNative::Composition::ICompositionDrawingSurfaceInner> s;
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