Running LottieGen on a few of our animations yielded this code, which doesn't pull in wrl.h:
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
#include "pch.h"
#include "circle_spinner.h"
#include "WindowsNumerics.h"
using namespace Microsoft::WRL;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Numerics;
using namespace Windows::Graphics;
using namespace Windows::UI;
using namespace Windows::UI::Composition;
namespace
{
static bool IsRuntimeCompatible()
{
if (!Windows::Foundation::Metadata::ApiInformation::IsTypePresent("Windows.UI.Composition.CompositionGeometricClip"))
{
return false;
}
return true;
}
ref class AnimatedVisual sealed : public Microsoft::UI::Xaml::Controls::IAnimatedVisual
{
const int64_t c_durationTicks = 20000000L;
Compositor^ const _c;
ExpressionAnimation^ const _reusableExpressionAnimation;
// The root of the composition.
ContainerVisual^ Root()
{
auto result = _c->CreateContainerVisual();
auto propertySet = result->Properties;
propertySet->InsertScalar("Progress", 0);
auto children = result->Children;
children->InsertAtTop(ShapeVisual());
return result;
}
ShapeVisual^ ShapeVisual()
{
auto result = _c->CreateShapeVisual();
result->Size = { 40, 40 };
return result;
}
public:
AnimatedVisual(Compositor^ compositor)
: _c(compositor)
, _reusableExpressionAnimation(compositor->CreateExpressionAnimation())
{
Root();
}
virtual ~AnimatedVisual() { }
property TimeSpan Duration
{
virtual TimeSpan get() { return { c_durationTicks }; }
}
property Visual^ RootVisual
{
virtual Visual^ get() { return _root; }
}
property float2 Size
{
virtual float2 get() { return { 40, 40 }; }
}
};
} // end namespace
Microsoft::UI::Xaml::Controls::IAnimatedVisual^ AnimatedVisuals::Circle_spinner::TryCreateAnimatedVisual(
Compositor^ compositor,
Object^* diagnostics)
{
diagnostics = nullptr;
if (!IsRuntimeCompatible())
{
return nullptr;
}
return ref new AnimatedVisual(compositor);
}