clang-format updates

- Put braces on their own line
- Turn off single-line case labels

Diffs=
32e79999a clang-format updates
diff --git a/.rive_head b/.rive_head
index b77e8cb..01bc573 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-4342233383156cba2154ad05b74157b139dc8bfc
+32e79999a88138e308ba4aef905c411361fa410b
diff --git a/include/rive/animation/animation.hpp b/include/rive/animation/animation.hpp
index f61e44d..757bca8 100644
--- a/include/rive/animation/animation.hpp
+++ b/include/rive/animation/animation.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_ANIMATION_HPP_
 #define _RIVE_ANIMATION_HPP_
 #include "rive/generated/animation/animation_base.hpp"
-namespace rive {
-class Animation : public AnimationBase {};
+namespace rive
+{
+class Animation : public AnimationBase
+{};
 } // namespace rive
 
 #endif
\ No newline at end of file
diff --git a/include/rive/animation/animation_state.hpp b/include/rive/animation/animation_state.hpp
index d9fc715..9a2a062 100644
--- a/include/rive/animation/animation_state.hpp
+++ b/include/rive/animation/animation_state.hpp
@@ -2,12 +2,14 @@
 #define _RIVE_ANIMATION_STATE_HPP_
 #include "rive/generated/animation/animation_state_base.hpp"
 #include <stdio.h>
-namespace rive {
+namespace rive
+{
 class LinearAnimation;
 class ArtboardInstance;
 class StateMachineLayerImporter;
 
-class AnimationState : public AnimationStateBase {
+class AnimationState : public AnimationStateBase
+{
     friend class StateMachineLayerImporter;
 
 private:
diff --git a/include/rive/animation/animation_state_instance.hpp b/include/rive/animation/animation_state_instance.hpp
index fa3efd8..379f5d3 100644
--- a/include/rive/animation/animation_state_instance.hpp
+++ b/include/rive/animation/animation_state_instance.hpp
@@ -5,11 +5,13 @@
 #include "rive/animation/state_instance.hpp"
 #include "rive/animation/linear_animation_instance.hpp"
 
-namespace rive {
+namespace rive
+{
 class AnimationState;
 
 /// Represents an instance of an animation state.
-class AnimationStateInstance : public StateInstance {
+class AnimationStateInstance : public StateInstance
+{
 private:
     LinearAnimationInstance m_AnimationInstance;
     bool m_KeepGoing;
diff --git a/include/rive/animation/any_state.hpp b/include/rive/animation/any_state.hpp
index f6f8b5a..bd07c14 100644
--- a/include/rive/animation/any_state.hpp
+++ b/include/rive/animation/any_state.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_ANY_STATE_HPP_
 #include "rive/generated/animation/any_state_base.hpp"
 #include <stdio.h>
-namespace rive {
-class AnyState : public AnyStateBase {
+namespace rive
+{
+class AnyState : public AnyStateBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/blend_animation.hpp b/include/rive/animation/blend_animation.hpp
index 7e8dde7..32e575e 100644
--- a/include/rive/animation/blend_animation.hpp
+++ b/include/rive/animation/blend_animation.hpp
@@ -1,9 +1,11 @@
 #ifndef _RIVE_BLEND_ANIMATION_HPP_
 #define _RIVE_BLEND_ANIMATION_HPP_
 #include "rive/generated/animation/blend_animation_base.hpp"
-namespace rive {
+namespace rive
+{
 class LinearAnimation;
-class BlendAnimation : public BlendAnimationBase {
+class BlendAnimation : public BlendAnimationBase
+{
 private:
     LinearAnimation* m_Animation = nullptr;
 
diff --git a/include/rive/animation/blend_animation_1d.hpp b/include/rive/animation/blend_animation_1d.hpp
index 4fb15f2..42b77e1 100644
--- a/include/rive/animation/blend_animation_1d.hpp
+++ b/include/rive/animation/blend_animation_1d.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BLEND_ANIMATION1_D_HPP_
 #include "rive/generated/animation/blend_animation_1d_base.hpp"
 #include <stdio.h>
-namespace rive {
-class BlendAnimation1D : public BlendAnimation1DBase {
+namespace rive
+{
+class BlendAnimation1D : public BlendAnimation1DBase
+{
 public:
     StatusCode onAddedDirty(CoreContext* context) override;
     StatusCode onAddedClean(CoreContext* context) override;
diff --git a/include/rive/animation/blend_animation_direct.hpp b/include/rive/animation/blend_animation_direct.hpp
index 6c098f4..97355cd 100644
--- a/include/rive/animation/blend_animation_direct.hpp
+++ b/include/rive/animation/blend_animation_direct.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BLEND_ANIMATION_DIRECT_HPP_
 #include "rive/generated/animation/blend_animation_direct_base.hpp"
 #include <stdio.h>
-namespace rive {
-class BlendAnimationDirect : public BlendAnimationDirectBase {
+namespace rive
+{
+class BlendAnimationDirect : public BlendAnimationDirectBase
+{
 public:
     StatusCode onAddedDirty(CoreContext* context) override;
     StatusCode onAddedClean(CoreContext* context) override;
diff --git a/include/rive/animation/blend_state.hpp b/include/rive/animation/blend_state.hpp
index 7ab97a1..6dded33 100644
--- a/include/rive/animation/blend_state.hpp
+++ b/include/rive/animation/blend_state.hpp
@@ -5,11 +5,13 @@
 #include <vector>
 #include <algorithm>
 
-namespace rive {
+namespace rive
+{
 class BlendAnimation;
 class LayerStateImporter;
 
-class BlendState : public BlendStateBase {
+class BlendState : public BlendStateBase
+{
     friend class LayerStateImporter;
 
 private:
diff --git a/include/rive/animation/blend_state_1d.hpp b/include/rive/animation/blend_state_1d.hpp
index 7cdc8dd..ebe394a 100644
--- a/include/rive/animation/blend_state_1d.hpp
+++ b/include/rive/animation/blend_state_1d.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BLEND_STATE1_D_HPP_
 #include "rive/generated/animation/blend_state_1d_base.hpp"
 
-namespace rive {
-class BlendState1D : public BlendState1DBase {
+namespace rive
+{
+class BlendState1D : public BlendState1DBase
+{
 public:
     //  -1 (4294967295) is our flag value for input not set. It means it wasn't set at edit
     //  time.
diff --git a/include/rive/animation/blend_state_1d_instance.hpp b/include/rive/animation/blend_state_1d_instance.hpp
index aa9760f..5f97cde 100644
--- a/include/rive/animation/blend_state_1d_instance.hpp
+++ b/include/rive/animation/blend_state_1d_instance.hpp
@@ -5,8 +5,10 @@
 #include "rive/animation/blend_state_1d.hpp"
 #include "rive/animation/blend_animation_1d.hpp"
 
-namespace rive {
-class BlendState1DInstance : public BlendStateInstance<BlendState1D, BlendAnimation1D> {
+namespace rive
+{
+class BlendState1DInstance : public BlendStateInstance<BlendState1D, BlendAnimation1D>
+{
 private:
     BlendStateAnimationInstance<BlendAnimation1D>* m_From = nullptr;
     BlendStateAnimationInstance<BlendAnimation1D>* m_To = nullptr;
diff --git a/include/rive/animation/blend_state_direct.hpp b/include/rive/animation/blend_state_direct.hpp
index b0d46e3..1d8707e 100644
--- a/include/rive/animation/blend_state_direct.hpp
+++ b/include/rive/animation/blend_state_direct.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BLEND_STATE_DIRECT_HPP_
 #include "rive/generated/animation/blend_state_direct_base.hpp"
 #include <stdio.h>
-namespace rive {
-class BlendStateDirect : public BlendStateDirectBase {
+namespace rive
+{
+class BlendStateDirect : public BlendStateDirectBase
+{
 public:
     std::unique_ptr<StateInstance> makeInstance(ArtboardInstance*) const override;
 };
diff --git a/include/rive/animation/blend_state_direct_instance.hpp b/include/rive/animation/blend_state_direct_instance.hpp
index efb2c30..8fd8cf8 100644
--- a/include/rive/animation/blend_state_direct_instance.hpp
+++ b/include/rive/animation/blend_state_direct_instance.hpp
@@ -5,8 +5,10 @@
 #include "rive/animation/blend_state_direct.hpp"
 #include "rive/animation/blend_animation_direct.hpp"
 
-namespace rive {
-class BlendStateDirectInstance : public BlendStateInstance<BlendStateDirect, BlendAnimationDirect> {
+namespace rive
+{
+class BlendStateDirectInstance : public BlendStateInstance<BlendStateDirect, BlendAnimationDirect>
+{
 public:
     BlendStateDirectInstance(const BlendStateDirect* blendState, ArtboardInstance* instance);
     void advance(float seconds, Span<SMIInput*> inputs) override;
diff --git a/include/rive/animation/blend_state_instance.hpp b/include/rive/animation/blend_state_instance.hpp
index ecd6e79..0311f01 100644
--- a/include/rive/animation/blend_state_instance.hpp
+++ b/include/rive/animation/blend_state_instance.hpp
@@ -7,11 +7,13 @@
 #include "rive/animation/blend_state.hpp"
 #include "rive/animation/linear_animation_instance.hpp"
 
-namespace rive {
+namespace rive
+{
 class AnimationState;
 
 template <class K, class T> class BlendStateInstance;
-template <class T> class BlendStateAnimationInstance {
+template <class T> class BlendStateAnimationInstance
+{
     template <class A, class B> friend class BlendStateInstance;
 
 private:
@@ -24,23 +26,25 @@
     const LinearAnimationInstance* animationInstance() const { return &m_AnimationInstance; }
 
     BlendStateAnimationInstance(const T* blendAnimation, ArtboardInstance* instance) :
-        m_BlendAnimation(blendAnimation),
-        m_AnimationInstance(blendAnimation->animation(), instance) {}
+        m_BlendAnimation(blendAnimation), m_AnimationInstance(blendAnimation->animation(), instance)
+    {}
 
     void mix(float value) { m_Mix = value; }
 };
 
-template <class K, class T> class BlendStateInstance : public StateInstance {
+template <class K, class T> class BlendStateInstance : public StateInstance
+{
 protected:
     std::vector<BlendStateAnimationInstance<T>> m_AnimationInstances;
     bool m_KeepGoing = true;
 
 public:
-    BlendStateInstance(const K* blendState, ArtboardInstance* instance) :
-        StateInstance(blendState) {
+    BlendStateInstance(const K* blendState, ArtboardInstance* instance) : StateInstance(blendState)
+    {
         m_AnimationInstances.reserve(blendState->animations().size());
 
-        for (auto blendAnimation : blendState->animations()) {
+        for (auto blendAnimation : blendState->animations())
+        {
             m_AnimationInstances.emplace_back(
                 BlendStateAnimationInstance<T>(static_cast<T*>(blendAnimation), instance));
         }
@@ -48,26 +52,34 @@
 
     bool keepGoing() const override { return m_KeepGoing; }
 
-    void advance(float seconds, Span<SMIInput*>) override {
+    void advance(float seconds, Span<SMIInput*>) override
+    {
         m_KeepGoing = false;
-        for (auto& animation : m_AnimationInstances) {
-            if (animation.m_AnimationInstance.advance(seconds)) {
+        for (auto& animation : m_AnimationInstances)
+        {
+            if (animation.m_AnimationInstance.advance(seconds))
+            {
                 m_KeepGoing = true;
             }
         }
     }
 
-    void apply(float mix) override {
-        for (auto& animation : m_AnimationInstances) {
+    void apply(float mix) override
+    {
+        for (auto& animation : m_AnimationInstances)
+        {
             float m = mix * animation.m_Mix;
             animation.m_AnimationInstance.apply(m);
         }
     }
 
     // Find the animationInstance that corresponds to the blendAnimation.
-    const LinearAnimationInstance* animationInstance(const BlendAnimation* blendAnimation) const {
-        for (auto& animation : m_AnimationInstances) {
-            if (animation.m_BlendAnimation == blendAnimation) {
+    const LinearAnimationInstance* animationInstance(const BlendAnimation* blendAnimation) const
+    {
+        for (auto& animation : m_AnimationInstances)
+        {
+            if (animation.m_BlendAnimation == blendAnimation)
+            {
                 return animation.animationInstance();
             }
         }
diff --git a/include/rive/animation/blend_state_transition.hpp b/include/rive/animation/blend_state_transition.hpp
index 3c83d8d..a406ba9 100644
--- a/include/rive/animation/blend_state_transition.hpp
+++ b/include/rive/animation/blend_state_transition.hpp
@@ -2,10 +2,12 @@
 #define _RIVE_BLEND_STATE_TRANSITION_HPP_
 #include "rive/generated/animation/blend_state_transition_base.hpp"
 #include <stdio.h>
-namespace rive {
+namespace rive
+{
 class BlendAnimation;
 class LayerStateImporter;
-class BlendStateTransition : public BlendStateTransitionBase {
+class BlendStateTransition : public BlendStateTransitionBase
+{
     friend class LayerStateImporter;
 
 private:
diff --git a/include/rive/animation/cubic_interpolator.hpp b/include/rive/animation/cubic_interpolator.hpp
index 6da4387..95cb660 100644
--- a/include/rive/animation/cubic_interpolator.hpp
+++ b/include/rive/animation/cubic_interpolator.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_CUBIC_INTERPOLATOR_HPP_
 #define _RIVE_CUBIC_INTERPOLATOR_HPP_
 #include "rive/generated/animation/cubic_interpolator_base.hpp"
-namespace rive {
-class CubicInterpolator : public CubicInterpolatorBase {
+namespace rive
+{
+class CubicInterpolator : public CubicInterpolatorBase
+{
 private:
     static constexpr int SplineTableSize = 11;
     static constexpr float SampleStepSize = 1.0f / (SplineTableSize - 1.0f);
diff --git a/include/rive/animation/entry_state.hpp b/include/rive/animation/entry_state.hpp
index 000f96b..e9bbfa2 100644
--- a/include/rive/animation/entry_state.hpp
+++ b/include/rive/animation/entry_state.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_ENTRY_STATE_HPP_
 #include "rive/generated/animation/entry_state_base.hpp"
 #include <stdio.h>
-namespace rive {
-class EntryState : public EntryStateBase {
+namespace rive
+{
+class EntryState : public EntryStateBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/exit_state.hpp b/include/rive/animation/exit_state.hpp
index b3d79d2..607526d 100644
--- a/include/rive/animation/exit_state.hpp
+++ b/include/rive/animation/exit_state.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_EXIT_STATE_HPP_
 #include "rive/generated/animation/exit_state_base.hpp"
 #include <stdio.h>
-namespace rive {
-class ExitState : public ExitStateBase {
+namespace rive
+{
+class ExitState : public ExitStateBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/keyed_object.hpp b/include/rive/animation/keyed_object.hpp
index 24eb2ac..70c97ab 100644
--- a/include/rive/animation/keyed_object.hpp
+++ b/include/rive/animation/keyed_object.hpp
@@ -2,10 +2,12 @@
 #define _RIVE_KEYED_OBJECT_HPP_
 #include "rive/generated/animation/keyed_object_base.hpp"
 #include <vector>
-namespace rive {
+namespace rive
+{
 class Artboard;
 class KeyedProperty;
-class KeyedObject : public KeyedObjectBase {
+class KeyedObject : public KeyedObjectBase
+{
 private:
     std::vector<std::unique_ptr<KeyedProperty>> m_KeyedProperties;
 
diff --git a/include/rive/animation/keyed_property.hpp b/include/rive/animation/keyed_property.hpp
index 69baa9e..29b8ffe 100644
--- a/include/rive/animation/keyed_property.hpp
+++ b/include/rive/animation/keyed_property.hpp
@@ -2,9 +2,11 @@
 #define _RIVE_KEYED_PROPERTY_HPP_
 #include "rive/generated/animation/keyed_property_base.hpp"
 #include <vector>
-namespace rive {
+namespace rive
+{
 class KeyFrame;
-class KeyedProperty : public KeyedPropertyBase {
+class KeyedProperty : public KeyedPropertyBase
+{
 private:
     std::vector<std::unique_ptr<KeyFrame>> m_KeyFrames;
 
diff --git a/include/rive/animation/keyframe.hpp b/include/rive/animation/keyframe.hpp
index 7d1a0c7..961f2aa 100644
--- a/include/rive/animation/keyframe.hpp
+++ b/include/rive/animation/keyframe.hpp
@@ -1,10 +1,12 @@
 #ifndef _RIVE_KEY_FRAME_HPP_
 #define _RIVE_KEY_FRAME_HPP_
 #include "rive/generated/animation/keyframe_base.hpp"
-namespace rive {
+namespace rive
+{
 class CubicInterpolator;
 
-class KeyFrame : public KeyFrameBase {
+class KeyFrame : public KeyFrameBase
+{
 private:
     CubicInterpolator* m_Interpolator = nullptr;
     float m_Seconds;
diff --git a/include/rive/animation/keyframe_bool.hpp b/include/rive/animation/keyframe_bool.hpp
index eff1d5a..88a234f 100644
--- a/include/rive/animation/keyframe_bool.hpp
+++ b/include/rive/animation/keyframe_bool.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_KEY_FRAME_BOOL_HPP_
 #include "rive/generated/animation/keyframe_bool_base.hpp"
 #include <stdio.h>
-namespace rive {
-class KeyFrameBool : public KeyFrameBoolBase {
+namespace rive
+{
+class KeyFrameBool : public KeyFrameBoolBase
+{
 public:
     void apply(Core* object, int propertyKey, float mix) override;
     void applyInterpolation(Core* object,
diff --git a/include/rive/animation/keyframe_color.hpp b/include/rive/animation/keyframe_color.hpp
index ba0061d..82c8bd9 100644
--- a/include/rive/animation/keyframe_color.hpp
+++ b/include/rive/animation/keyframe_color.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_KEY_FRAME_COLOR_HPP_
 #define _RIVE_KEY_FRAME_COLOR_HPP_
 #include "rive/generated/animation/keyframe_color_base.hpp"
-namespace rive {
-class KeyFrameColor : public KeyFrameColorBase {
+namespace rive
+{
+class KeyFrameColor : public KeyFrameColorBase
+{
 public:
     void apply(Core* object, int propertyKey, float mix) override;
     void applyInterpolation(Core* object,
diff --git a/include/rive/animation/keyframe_double.hpp b/include/rive/animation/keyframe_double.hpp
index e94cfbc..2bdff78 100644
--- a/include/rive/animation/keyframe_double.hpp
+++ b/include/rive/animation/keyframe_double.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_KEY_FRAME_DOUBLE_HPP_
 #define _RIVE_KEY_FRAME_DOUBLE_HPP_
 #include "rive/generated/animation/keyframe_double_base.hpp"
-namespace rive {
-class KeyFrameDouble : public KeyFrameDoubleBase {
+namespace rive
+{
+class KeyFrameDouble : public KeyFrameDoubleBase
+{
 public:
     void apply(Core* object, int propertyKey, float mix) override;
     void applyInterpolation(Core* object,
diff --git a/include/rive/animation/keyframe_id.hpp b/include/rive/animation/keyframe_id.hpp
index 5ef658c..cf706a1 100644
--- a/include/rive/animation/keyframe_id.hpp
+++ b/include/rive/animation/keyframe_id.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_KEY_FRAME_ID_HPP_
 #include "rive/generated/animation/keyframe_id_base.hpp"
 #include <stdio.h>
-namespace rive {
-class KeyFrameId : public KeyFrameIdBase {
+namespace rive
+{
+class KeyFrameId : public KeyFrameIdBase
+{
 public:
     void apply(Core* object, int propertyKey, float mix) override;
     void applyInterpolation(Core* object,
diff --git a/include/rive/animation/layer_state.hpp b/include/rive/animation/layer_state.hpp
index 778632c..7229640 100644
--- a/include/rive/animation/layer_state.hpp
+++ b/include/rive/animation/layer_state.hpp
@@ -4,14 +4,16 @@
 #include <stdio.h>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class ArtboardInstance;
 class StateTransition;
 class LayerStateImporter;
 class StateMachineLayerImporter;
 class StateInstance;
 
-class LayerState : public LayerStateBase {
+class LayerState : public LayerStateBase
+{
     friend class LayerStateImporter;
     friend class StateMachineLayerImporter;
 
@@ -27,8 +29,10 @@
     StatusCode import(ImportStack& importStack) override;
 
     size_t transitionCount() const { return m_Transitions.size(); }
-    StateTransition* transition(size_t index) const {
-        if (index < m_Transitions.size()) {
+    StateTransition* transition(size_t index) const
+    {
+        if (index < m_Transitions.size())
+        {
             return m_Transitions[index];
         }
         return nullptr;
diff --git a/include/rive/animation/linear_animation.hpp b/include/rive/animation/linear_animation.hpp
index b205443..309c6d7 100644
--- a/include/rive/animation/linear_animation.hpp
+++ b/include/rive/animation/linear_animation.hpp
@@ -3,11 +3,13 @@
 #include "rive/animation/loop.hpp"
 #include "rive/generated/animation/linear_animation_base.hpp"
 #include <vector>
-namespace rive {
+namespace rive
+{
 class Artboard;
 class KeyedObject;
 
-class LinearAnimation : public LinearAnimationBase {
+class LinearAnimation : public LinearAnimationBase
+{
 private:
     std::vector<std::unique_ptr<KeyedObject>> m_KeyedObjects;
 
diff --git a/include/rive/animation/linear_animation_instance.hpp b/include/rive/animation/linear_animation_instance.hpp
index d834441..a88122b 100644
--- a/include/rive/animation/linear_animation_instance.hpp
+++ b/include/rive/animation/linear_animation_instance.hpp
@@ -4,10 +4,12 @@
 #include "rive/artboard.hpp"
 #include "rive/scene.hpp"
 
-namespace rive {
+namespace rive
+{
 class LinearAnimation;
 
-class LinearAnimationInstance : public Scene {
+class LinearAnimationInstance : public Scene
+{
 private:
     const LinearAnimation* m_Animation = nullptr;
     float m_Time;
@@ -39,10 +41,14 @@
 
     // Update the direction of the animation instance, positive value for
     // forwards Negative for backwards
-    void direction(int direction) {
-        if (direction > 0) {
+    void direction(int direction)
+    {
+        if (direction > 0)
+        {
             m_Direction = 1;
-        } else {
+        }
+        else
+        {
             m_Direction = -1;
         }
     }
diff --git a/include/rive/animation/listener_action.hpp b/include/rive/animation/listener_action.hpp
index 46d3dc0..370a5cc 100644
--- a/include/rive/animation/listener_action.hpp
+++ b/include/rive/animation/listener_action.hpp
@@ -3,9 +3,11 @@
 #include "rive/generated/animation/listener_action_base.hpp"
 #include "rive/math/vec2d.hpp"
 
-namespace rive {
+namespace rive
+{
 class StateMachineInstance;
-class ListenerAction : public ListenerActionBase {
+class ListenerAction : public ListenerActionBase
+{
 public:
     StatusCode import(ImportStack& importStack) override;
     virtual void perform(StateMachineInstance* stateMachineInstance, Vec2D position) const = 0;
diff --git a/include/rive/animation/listener_align_target.hpp b/include/rive/animation/listener_align_target.hpp
index a3221e2..dd71108 100644
--- a/include/rive/animation/listener_align_target.hpp
+++ b/include/rive/animation/listener_align_target.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_LISTENER_ALIGN_TARGET_HPP_
 #include "rive/generated/animation/listener_align_target_base.hpp"
 #include <stdio.h>
-namespace rive {
-class ListenerAlignTarget : public ListenerAlignTargetBase {
+namespace rive
+{
+class ListenerAlignTarget : public ListenerAlignTargetBase
+{
 public:
     void perform(StateMachineInstance* stateMachineInstance, Vec2D position) const override;
 };
diff --git a/include/rive/animation/listener_bool_change.hpp b/include/rive/animation/listener_bool_change.hpp
index 53a7bf8..060a886 100644
--- a/include/rive/animation/listener_bool_change.hpp
+++ b/include/rive/animation/listener_bool_change.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_LISTENER_BOOL_CHANGE_HPP_
 #include "rive/generated/animation/listener_bool_change_base.hpp"
 
-namespace rive {
-class ListenerBoolChange : public ListenerBoolChangeBase {
+namespace rive
+{
+class ListenerBoolChange : public ListenerBoolChangeBase
+{
 public:
     bool validateInputType(const StateMachineInput* input) const override;
     void perform(StateMachineInstance* stateMachineInstance, Vec2D position) const override;
diff --git a/include/rive/animation/listener_input_change.hpp b/include/rive/animation/listener_input_change.hpp
index 7946acb..713fa99 100644
--- a/include/rive/animation/listener_input_change.hpp
+++ b/include/rive/animation/listener_input_change.hpp
@@ -2,9 +2,11 @@
 #define _RIVE_LISTENER_INPUT_CHANGE_HPP_
 #include "rive/generated/animation/listener_input_change_base.hpp"
 
-namespace rive {
+namespace rive
+{
 class StateMachineInput;
-class ListenerInputChange : public ListenerInputChangeBase {
+class ListenerInputChange : public ListenerInputChangeBase
+{
 public:
     StatusCode import(ImportStack& importStack) override;
     virtual bool validateInputType(const StateMachineInput* input) const { return true; }
diff --git a/include/rive/animation/listener_number_change.hpp b/include/rive/animation/listener_number_change.hpp
index ac8a658..75cf223 100644
--- a/include/rive/animation/listener_number_change.hpp
+++ b/include/rive/animation/listener_number_change.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_LISTENER_NUMBER_CHANGE_HPP_
 #include "rive/generated/animation/listener_number_change_base.hpp"
 
-namespace rive {
-class ListenerNumberChange : public ListenerNumberChangeBase {
+namespace rive
+{
+class ListenerNumberChange : public ListenerNumberChangeBase
+{
 public:
     bool validateInputType(const StateMachineInput* input) const override;
     void perform(StateMachineInstance* stateMachineInstance, Vec2D position) const override;
diff --git a/include/rive/animation/listener_trigger_change.hpp b/include/rive/animation/listener_trigger_change.hpp
index fe8bab5..ecd4261 100644
--- a/include/rive/animation/listener_trigger_change.hpp
+++ b/include/rive/animation/listener_trigger_change.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_LISTENER_TRIGGER_CHANGE_HPP_
 #include "rive/generated/animation/listener_trigger_change_base.hpp"
 
-namespace rive {
-class ListenerTriggerChange : public ListenerTriggerChangeBase {
+namespace rive
+{
+class ListenerTriggerChange : public ListenerTriggerChangeBase
+{
 public:
     bool validateInputType(const StateMachineInput* input) const override;
     void perform(StateMachineInstance* stateMachineInstance, Vec2D position) const override;
diff --git a/include/rive/animation/loop.hpp b/include/rive/animation/loop.hpp
index 9b7bc1f..d4f0d53 100644
--- a/include/rive/animation/loop.hpp
+++ b/include/rive/animation/loop.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_LOOP_HPP_
 #define _RIVE_LOOP_HPP_
-namespace rive {
+namespace rive
+{
 /// Loop options for linear animations.
-enum class Loop : unsigned int {
+enum class Loop : unsigned int
+{
     /// Play until the duration or end of work area of the animation.
     oneShot = 0,
 
diff --git a/include/rive/animation/nested_bool.hpp b/include/rive/animation/nested_bool.hpp
index 9684564..99f0dab 100644
--- a/include/rive/animation/nested_bool.hpp
+++ b/include/rive/animation/nested_bool.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_BOOL_HPP_
 #include "rive/generated/animation/nested_bool_base.hpp"
 #include <stdio.h>
-namespace rive {
-class NestedBool : public NestedBoolBase {
+namespace rive
+{
+class NestedBool : public NestedBoolBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/nested_input.hpp b/include/rive/animation/nested_input.hpp
index d6bf34f..158cf05 100644
--- a/include/rive/animation/nested_input.hpp
+++ b/include/rive/animation/nested_input.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_INPUT_HPP_
 #include "rive/generated/animation/nested_input_base.hpp"
 #include <stdio.h>
-namespace rive {
-class NestedInput : public NestedInputBase {
+namespace rive
+{
+class NestedInput : public NestedInputBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/nested_linear_animation.hpp b/include/rive/animation/nested_linear_animation.hpp
index 88c65c5..7de512c 100644
--- a/include/rive/animation/nested_linear_animation.hpp
+++ b/include/rive/animation/nested_linear_animation.hpp
@@ -2,9 +2,11 @@
 #define _RIVE_NESTED_LINEAR_ANIMATION_HPP_
 #include "rive/generated/animation/nested_linear_animation_base.hpp"
 #include <stdio.h>
-namespace rive {
+namespace rive
+{
 class LinearAnimationInstance;
-class NestedLinearAnimation : public NestedLinearAnimationBase {
+class NestedLinearAnimation : public NestedLinearAnimationBase
+{
 protected:
     std::unique_ptr<LinearAnimationInstance> m_AnimationInstance;
 
diff --git a/include/rive/animation/nested_number.hpp b/include/rive/animation/nested_number.hpp
index 83e3568..5ae1053 100644
--- a/include/rive/animation/nested_number.hpp
+++ b/include/rive/animation/nested_number.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_NUMBER_HPP_
 #include "rive/generated/animation/nested_number_base.hpp"
 #include <stdio.h>
-namespace rive {
-class NestedNumber : public NestedNumberBase {
+namespace rive
+{
+class NestedNumber : public NestedNumberBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/nested_remap_animation.hpp b/include/rive/animation/nested_remap_animation.hpp
index 410aa6a..c83002c 100644
--- a/include/rive/animation/nested_remap_animation.hpp
+++ b/include/rive/animation/nested_remap_animation.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_REMAP_ANIMATION_HPP_
 #include "rive/generated/animation/nested_remap_animation_base.hpp"
 #include <stdio.h>
-namespace rive {
-class NestedRemapAnimation : public NestedRemapAnimationBase {
+namespace rive
+{
+class NestedRemapAnimation : public NestedRemapAnimationBase
+{
 public:
     void timeChanged() override;
     void advance(float elapsedSeconds) override;
diff --git a/include/rive/animation/nested_simple_animation.hpp b/include/rive/animation/nested_simple_animation.hpp
index 628e243..41bc958 100644
--- a/include/rive/animation/nested_simple_animation.hpp
+++ b/include/rive/animation/nested_simple_animation.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_SIMPLE_ANIMATION_HPP_
 #include "rive/generated/animation/nested_simple_animation_base.hpp"
 #include <stdio.h>
-namespace rive {
-class NestedSimpleAnimation : public NestedSimpleAnimationBase {
+namespace rive
+{
+class NestedSimpleAnimation : public NestedSimpleAnimationBase
+{
 public:
     void advance(float elapsedSeconds) override;
 };
diff --git a/include/rive/animation/nested_state_machine.hpp b/include/rive/animation/nested_state_machine.hpp
index da2e7a9..46790e7 100644
--- a/include/rive/animation/nested_state_machine.hpp
+++ b/include/rive/animation/nested_state_machine.hpp
@@ -4,10 +4,12 @@
 #include "rive/math/vec2d.hpp"
 #include <memory>
 
-namespace rive {
+namespace rive
+{
 class ArtboardInstance;
 class StateMachineInstance;
-class NestedStateMachine : public NestedStateMachineBase {
+class NestedStateMachine : public NestedStateMachineBase
+{
 private:
     std::unique_ptr<StateMachineInstance> m_StateMachineInstance;
 
diff --git a/include/rive/animation/nested_trigger.hpp b/include/rive/animation/nested_trigger.hpp
index 57d3a9e..7861dbd 100644
--- a/include/rive/animation/nested_trigger.hpp
+++ b/include/rive/animation/nested_trigger.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_TRIGGER_HPP_
 #include "rive/generated/animation/nested_trigger_base.hpp"
 #include <stdio.h>
-namespace rive {
-class NestedTrigger : public NestedTriggerBase {
+namespace rive
+{
+class NestedTrigger : public NestedTriggerBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/state_instance.hpp b/include/rive/animation/state_instance.hpp
index d5fa0d5..3465a43 100644
--- a/include/rive/animation/state_instance.hpp
+++ b/include/rive/animation/state_instance.hpp
@@ -6,13 +6,15 @@
 #include "rive/rive_types.hpp"
 #include "rive/span.hpp"
 
-namespace rive {
+namespace rive
+{
 class LayerState;
 class SMIInput;
 class ArtboardInstance;
 
 /// Represents an instance of a state tracked by the State Machine.
-class StateInstance {
+class StateInstance
+{
 private:
     const LayerState* m_LayerState;
 
diff --git a/include/rive/animation/state_machine.hpp b/include/rive/animation/state_machine.hpp
index 329a6ea..9899893 100644
--- a/include/rive/animation/state_machine.hpp
+++ b/include/rive/animation/state_machine.hpp
@@ -4,12 +4,14 @@
 #include <stdio.h>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class StateMachineLayer;
 class StateMachineInput;
 class StateMachineListener;
 class StateMachineImporter;
-class StateMachine : public StateMachineBase {
+class StateMachine : public StateMachineBase
+{
     friend class StateMachineImporter;
 
 private:
diff --git a/include/rive/animation/state_machine_bool.hpp b/include/rive/animation/state_machine_bool.hpp
index f06e94f..a441e55 100644
--- a/include/rive/animation/state_machine_bool.hpp
+++ b/include/rive/animation/state_machine_bool.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_MACHINE_BOOL_HPP_
 #include "rive/generated/animation/state_machine_bool_base.hpp"
 #include <stdio.h>
-namespace rive {
-class StateMachineBool : public StateMachineBoolBase {
+namespace rive
+{
+class StateMachineBool : public StateMachineBoolBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/state_machine_component.hpp b/include/rive/animation/state_machine_component.hpp
index d4118fb..8f6e340 100644
--- a/include/rive/animation/state_machine_component.hpp
+++ b/include/rive/animation/state_machine_component.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_MACHINE_COMPONENT_HPP_
 #include "rive/generated/animation/state_machine_component_base.hpp"
 #include <stdio.h>
-namespace rive {
-class StateMachineComponent : public StateMachineComponentBase {
+namespace rive
+{
+class StateMachineComponent : public StateMachineComponentBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/state_machine_input.hpp b/include/rive/animation/state_machine_input.hpp
index 096ff94..d7d29ae 100644
--- a/include/rive/animation/state_machine_input.hpp
+++ b/include/rive/animation/state_machine_input.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_MACHINE_INPUT_HPP_
 #include "rive/generated/animation/state_machine_input_base.hpp"
 #include <stdio.h>
-namespace rive {
-class StateMachineInput : public StateMachineInputBase {
+namespace rive
+{
+class StateMachineInput : public StateMachineInputBase
+{
 public:
     StatusCode onAddedDirty(CoreContext* context) override;
     StatusCode onAddedClean(CoreContext* context) override;
diff --git a/include/rive/animation/state_machine_input_instance.hpp b/include/rive/animation/state_machine_input_instance.hpp
index 1b014a4..e5f732c 100644
--- a/include/rive/animation/state_machine_input_instance.hpp
+++ b/include/rive/animation/state_machine_input_instance.hpp
@@ -4,7 +4,8 @@
 #include <string>
 #include <stdint.h>
 
-namespace rive {
+namespace rive
+{
 class StateMachineInstance;
 class StateMachineInput;
 class StateMachineBool;
@@ -13,7 +14,8 @@
 class TransitionTriggerCondition;
 class StateMachineLayerInstance;
 
-class SMIInput {
+class SMIInput
+{
     friend class StateMachineInstance;
     friend class StateMachineLayerInstance;
 
@@ -36,7 +38,8 @@
     uint16_t inputCoreType() const;
 };
 
-class SMIBool : public SMIInput {
+class SMIBool : public SMIInput
+{
     friend class StateMachineInstance;
 
 private:
@@ -49,7 +52,8 @@
     void value(bool newValue);
 };
 
-class SMINumber : public SMIInput {
+class SMINumber : public SMIInput
+{
     friend class StateMachineInstance;
 
 private:
@@ -62,7 +66,8 @@
     void value(float newValue);
 };
 
-class SMITrigger : public SMIInput {
+class SMITrigger : public SMIInput
+{
     friend class StateMachineInstance;
     friend class TransitionTriggerCondition;
 
diff --git a/include/rive/animation/state_machine_instance.hpp b/include/rive/animation/state_machine_instance.hpp
index 7a907bd..5013b34 100644
--- a/include/rive/animation/state_machine_instance.hpp
+++ b/include/rive/animation/state_machine_instance.hpp
@@ -8,7 +8,8 @@
 #include "rive/listener_type.hpp"
 #include "rive/scene.hpp"
 
-namespace rive {
+namespace rive
+{
 class StateMachine;
 class LayerState;
 class SMIInput;
@@ -21,7 +22,8 @@
 class HitShape;
 class NestedArtboard;
 
-class StateMachineInstance : public Scene {
+class StateMachineInstance : public Scene
+{
     friend class SMIInput;
 
 private:
diff --git a/include/rive/animation/state_machine_layer.hpp b/include/rive/animation/state_machine_layer.hpp
index 431491a..74ba7e3 100644
--- a/include/rive/animation/state_machine_layer.hpp
+++ b/include/rive/animation/state_machine_layer.hpp
@@ -4,13 +4,15 @@
 #include <stdio.h>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class LayerState;
 class StateMachineLayerImporter;
 class AnyState;
 class EntryState;
 class ExitState;
-class StateMachineLayer : public StateMachineLayerBase {
+class StateMachineLayer : public StateMachineLayerBase
+{
     friend class StateMachineLayerImporter;
 
 private:
@@ -34,8 +36,10 @@
 
 #ifdef TESTING
     size_t stateCount() const { return m_States.size(); }
-    LayerState* state(size_t index) const {
-        if (index < m_States.size()) {
+    LayerState* state(size_t index) const
+    {
+        if (index < m_States.size())
+        {
             return m_States[index];
         }
         return nullptr;
diff --git a/include/rive/animation/state_machine_layer_component.hpp b/include/rive/animation/state_machine_layer_component.hpp
index aaf2581..4016d5e 100644
--- a/include/rive/animation/state_machine_layer_component.hpp
+++ b/include/rive/animation/state_machine_layer_component.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_MACHINE_LAYER_COMPONENT_HPP_
 #include "rive/generated/animation/state_machine_layer_component_base.hpp"
 #include <stdio.h>
-namespace rive {
-class StateMachineLayerComponent : public StateMachineLayerComponentBase {
+namespace rive
+{
+class StateMachineLayerComponent : public StateMachineLayerComponentBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/state_machine_listener.hpp b/include/rive/animation/state_machine_listener.hpp
index f962b8c..88be3c0 100644
--- a/include/rive/animation/state_machine_listener.hpp
+++ b/include/rive/animation/state_machine_listener.hpp
@@ -4,12 +4,14 @@
 #include "rive/listener_type.hpp"
 #include "rive/math/vec2d.hpp"
 
-namespace rive {
+namespace rive
+{
 class Shape;
 class StateMachineListenerImporter;
 class ListenerAction;
 class StateMachineInstance;
-class StateMachineListener : public StateMachineListenerBase {
+class StateMachineListener : public StateMachineListenerBase
+{
     friend class StateMachineListenerImporter;
 
 private:
diff --git a/include/rive/animation/state_machine_number.hpp b/include/rive/animation/state_machine_number.hpp
index e67e812..ca3e4e1 100644
--- a/include/rive/animation/state_machine_number.hpp
+++ b/include/rive/animation/state_machine_number.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_MACHINE_NUMBER_HPP_
 #include "rive/generated/animation/state_machine_number_base.hpp"
 #include <stdio.h>
-namespace rive {
-class StateMachineNumber : public StateMachineNumberBase {
+namespace rive
+{
+class StateMachineNumber : public StateMachineNumberBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/animation/state_machine_trigger.hpp b/include/rive/animation/state_machine_trigger.hpp
index f9320d5..c556c57 100644
--- a/include/rive/animation/state_machine_trigger.hpp
+++ b/include/rive/animation/state_machine_trigger.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_MACHINE_TRIGGER_HPP_
 #include "rive/generated/animation/state_machine_trigger_base.hpp"
 #include <stdio.h>
-namespace rive {
-class StateMachineTrigger : public StateMachineTriggerBase {};
+namespace rive
+{
+class StateMachineTrigger : public StateMachineTriggerBase
+{};
 } // namespace rive
 
 #endif
\ No newline at end of file
diff --git a/include/rive/animation/state_transition.hpp b/include/rive/animation/state_transition.hpp
index 101b3de..ce63bbf 100644
--- a/include/rive/animation/state_transition.hpp
+++ b/include/rive/animation/state_transition.hpp
@@ -5,7 +5,8 @@
 #include <stdio.h>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class LayerState;
 class StateMachineLayerImporter;
 class StateTransitionImporter;
@@ -15,14 +16,21 @@
 class LinearAnimation;
 class LinearAnimationInstance;
 
-enum class AllowTransition : unsigned char { no, waitingForExit, yes };
+enum class AllowTransition : unsigned char
+{
+    no,
+    waitingForExit,
+    yes
+};
 
-class StateTransition : public StateTransitionBase {
+class StateTransition : public StateTransitionBase
+{
     friend class StateMachineLayerImporter;
     friend class StateTransitionImporter;
 
 private:
-    StateTransitionFlags transitionFlags() const {
+    StateTransitionFlags transitionFlags() const
+    {
         return static_cast<StateTransitionFlags>(flags());
     }
     LayerState* m_StateTo = nullptr;
@@ -39,7 +47,8 @@
 
     /// Whether the transition is marked disabled (usually done in the
     /// editor).
-    bool isDisabled() const {
+    bool isDisabled() const
+    {
         return (transitionFlags() & StateTransitionFlags::Disabled) ==
                StateTransitionFlags::Disabled;
     }
@@ -52,14 +61,16 @@
 
     /// Whether the animation is held at exit or if it keeps advancing
     /// during mixing.
-    bool pauseOnExit() const {
+    bool pauseOnExit() const
+    {
         return (transitionFlags() & StateTransitionFlags::PauseOnExit) ==
                StateTransitionFlags::PauseOnExit;
     }
 
     /// Whether exit time is enabled. All other conditions still apply, the
     /// exit time is effectively an AND with the rest of the conditions.
-    bool enableExitTime() const {
+    bool enableExitTime() const
+    {
         return (transitionFlags() & StateTransitionFlags::EnableExitTime) ==
                StateTransitionFlags::EnableExitTime;
     }
@@ -67,8 +78,10 @@
     StatusCode import(ImportStack& importStack) override;
 
     size_t conditionCount() const { return m_Conditions.size(); }
-    TransitionCondition* condition(size_t index) const {
-        if (index < m_Conditions.size()) {
+    TransitionCondition* condition(size_t index) const
+    {
+        if (index < m_Conditions.size())
+        {
             return m_Conditions[index];
         }
         return nullptr;
diff --git a/include/rive/animation/state_transition_flags.hpp b/include/rive/animation/state_transition_flags.hpp
index 7ce6758..542c231 100644
--- a/include/rive/animation/state_transition_flags.hpp
+++ b/include/rive/animation/state_transition_flags.hpp
@@ -3,8 +3,10 @@
 
 #include <type_traits>
 
-namespace rive {
-enum class StateTransitionFlags : unsigned char {
+namespace rive
+{
+enum class StateTransitionFlags : unsigned char
+{
     None = 0,
 
     /// Whether the transition is disabled.
@@ -25,33 +27,35 @@
 
 };
 
-inline constexpr StateTransitionFlags operator&(StateTransitionFlags lhs,
-                                                StateTransitionFlags rhs) {
+inline constexpr StateTransitionFlags operator&(StateTransitionFlags lhs, StateTransitionFlags rhs)
+{
     return static_cast<StateTransitionFlags>(
         static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) &
         static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
 }
 
-inline constexpr StateTransitionFlags operator^(StateTransitionFlags lhs,
-                                                StateTransitionFlags rhs) {
+inline constexpr StateTransitionFlags operator^(StateTransitionFlags lhs, StateTransitionFlags rhs)
+{
     return static_cast<StateTransitionFlags>(
         static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) ^
         static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
 }
 
-inline constexpr StateTransitionFlags operator|(StateTransitionFlags lhs,
-                                                StateTransitionFlags rhs) {
+inline constexpr StateTransitionFlags operator|(StateTransitionFlags lhs, StateTransitionFlags rhs)
+{
     return static_cast<StateTransitionFlags>(
         static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) |
         static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
 }
 
-inline constexpr StateTransitionFlags operator~(StateTransitionFlags rhs) {
+inline constexpr StateTransitionFlags operator~(StateTransitionFlags rhs)
+{
     return static_cast<StateTransitionFlags>(
         ~static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
 }
 
-inline StateTransitionFlags& operator|=(StateTransitionFlags& lhs, StateTransitionFlags rhs) {
+inline StateTransitionFlags& operator|=(StateTransitionFlags& lhs, StateTransitionFlags rhs)
+{
     lhs = static_cast<StateTransitionFlags>(
         static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) |
         static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
@@ -59,7 +63,8 @@
     return lhs;
 }
 
-inline StateTransitionFlags& operator&=(StateTransitionFlags& lhs, StateTransitionFlags rhs) {
+inline StateTransitionFlags& operator&=(StateTransitionFlags& lhs, StateTransitionFlags rhs)
+{
     lhs = static_cast<StateTransitionFlags>(
         static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) &
         static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
@@ -67,7 +72,8 @@
     return lhs;
 }
 
-inline StateTransitionFlags& operator^=(StateTransitionFlags& lhs, StateTransitionFlags rhs) {
+inline StateTransitionFlags& operator^=(StateTransitionFlags& lhs, StateTransitionFlags rhs)
+{
     lhs = static_cast<StateTransitionFlags>(
         static_cast<std::underlying_type<StateTransitionFlags>::type>(lhs) ^
         static_cast<std::underlying_type<StateTransitionFlags>::type>(rhs));
diff --git a/include/rive/animation/system_state_instance.hpp b/include/rive/animation/system_state_instance.hpp
index f0a9853..0adc062 100644
--- a/include/rive/animation/system_state_instance.hpp
+++ b/include/rive/animation/system_state_instance.hpp
@@ -4,11 +4,13 @@
 #include <string>
 #include "rive/animation/state_instance.hpp"
 
-namespace rive {
+namespace rive
+{
 /// Represents an instance of a system state machine. Basically a
 /// placeholder that may have meaning to the state machine itself, or is
 /// just a no-op state (perhaps an unknown to this runtime state-type).
-class SystemStateInstance : public StateInstance {
+class SystemStateInstance : public StateInstance
+{
 public:
     SystemStateInstance(const LayerState* layerState, ArtboardInstance* instance);
 
diff --git a/include/rive/animation/transition_bool_condition.hpp b/include/rive/animation/transition_bool_condition.hpp
index a737d6c..3a41a16 100644
--- a/include/rive/animation/transition_bool_condition.hpp
+++ b/include/rive/animation/transition_bool_condition.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSITION_BOOL_CONDITION_HPP_
 #include "rive/generated/animation/transition_bool_condition_base.hpp"
 #include <stdio.h>
-namespace rive {
-class TransitionBoolCondition : public TransitionBoolConditionBase {
+namespace rive
+{
+class TransitionBoolCondition : public TransitionBoolConditionBase
+{
 public:
     bool evaluate(const SMIInput* inputInstance) const override;
 
diff --git a/include/rive/animation/transition_condition.hpp b/include/rive/animation/transition_condition.hpp
index c8772b7..5198013 100644
--- a/include/rive/animation/transition_condition.hpp
+++ b/include/rive/animation/transition_condition.hpp
@@ -2,11 +2,13 @@
 #define _RIVE_TRANSITION_CONDITION_HPP_
 #include "rive/generated/animation/transition_condition_base.hpp"
 
-namespace rive {
+namespace rive
+{
 class StateMachineInput;
 class SMIInput;
 
-class TransitionCondition : public TransitionConditionBase {
+class TransitionCondition : public TransitionConditionBase
+{
 public:
     StatusCode onAddedDirty(CoreContext* context) override;
     StatusCode onAddedClean(CoreContext* context) override;
diff --git a/include/rive/animation/transition_condition_op.hpp b/include/rive/animation/transition_condition_op.hpp
index 8585d38..cf2ef7c 100644
--- a/include/rive/animation/transition_condition_op.hpp
+++ b/include/rive/animation/transition_condition_op.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_TRANSITION_CONDITION_OP_HPP_
 #define _RIVE_TRANSITION_CONDITION_OP_HPP_
 
-namespace rive {
-enum class TransitionConditionOp : int {
+namespace rive
+{
+enum class TransitionConditionOp : int
+{
     equal = 0,
     notEqual = 1,
     lessThanOrEqual = 2,
diff --git a/include/rive/animation/transition_number_condition.hpp b/include/rive/animation/transition_number_condition.hpp
index bcad26e..e8c88d9 100644
--- a/include/rive/animation/transition_number_condition.hpp
+++ b/include/rive/animation/transition_number_condition.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSITION_NUMBER_CONDITION_HPP_
 #include "rive/generated/animation/transition_number_condition_base.hpp"
 #include <stdio.h>
-namespace rive {
-class TransitionNumberCondition : public TransitionNumberConditionBase {
+namespace rive
+{
+class TransitionNumberCondition : public TransitionNumberConditionBase
+{
 protected:
     bool validateInputType(const StateMachineInput* input) const override;
 
diff --git a/include/rive/animation/transition_trigger_condition.hpp b/include/rive/animation/transition_trigger_condition.hpp
index d81157b..cb53566 100644
--- a/include/rive/animation/transition_trigger_condition.hpp
+++ b/include/rive/animation/transition_trigger_condition.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSITION_TRIGGER_CONDITION_HPP_
 #include "rive/generated/animation/transition_trigger_condition_base.hpp"
 #include <stdio.h>
-namespace rive {
-class TransitionTriggerCondition : public TransitionTriggerConditionBase {
+namespace rive
+{
+class TransitionTriggerCondition : public TransitionTriggerConditionBase
+{
 public:
     bool evaluate(const SMIInput* inputInstance) const override;
 
diff --git a/include/rive/animation/transition_value_condition.hpp b/include/rive/animation/transition_value_condition.hpp
index a3d68ee..6f79a02 100644
--- a/include/rive/animation/transition_value_condition.hpp
+++ b/include/rive/animation/transition_value_condition.hpp
@@ -3,8 +3,10 @@
 #include "rive/generated/animation/transition_value_condition_base.hpp"
 #include "rive/animation/transition_condition_op.hpp"
 
-namespace rive {
-class TransitionValueCondition : public TransitionValueConditionBase {
+namespace rive
+{
+class TransitionValueCondition : public TransitionValueConditionBase
+{
 public:
     TransitionConditionOp op() const { return (TransitionConditionOp)opValue(); }
 };
diff --git a/include/rive/artboard.hpp b/include/rive/artboard.hpp
index e3a5962..e788a07 100644
--- a/include/rive/artboard.hpp
+++ b/include/rive/artboard.hpp
@@ -13,7 +13,8 @@
 #include <queue>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class File;
 class Drawable;
 class Factory;
@@ -26,7 +27,8 @@
 class Scene;
 class StateMachineInstance;
 
-class Artboard : public ArtboardBase, public CoreContext, public ShapePaintContainer {
+class Artboard : public ArtboardBase, public CoreContext, public ShapePaintContainer
+{
     friend class File;
     friend class ArtboardImporter;
     friend class Component;
@@ -88,7 +90,8 @@
 
     bool advance(double elapsedSeconds);
 
-    enum class DrawOption {
+    enum class DrawOption
+    {
         kNormal,
         kHideBG,
         kHideFG,
@@ -108,9 +111,12 @@
     bool isTranslucent(const LinearAnimation*) const;
     bool isTranslucent(const LinearAnimationInstance*) const;
 
-    template <typename T = Component> T* find(const std::string& name) {
-        for (auto object : m_Objects) {
-            if (object != nullptr && object->is<T>() && object->as<T>()->name() == name) {
+    template <typename T = Component> T* find(const std::string& name)
+    {
+        for (auto object : m_Objects)
+        {
+            if (object != nullptr && object->is<T>() && object->as<T>()->name() == name)
+            {
                 return reinterpret_cast<T*>(object);
             }
         }
@@ -159,7 +165,8 @@
     StatusCode import(ImportStack& importStack) override;
 };
 
-class ArtboardInstance : public Artboard {
+class ArtboardInstance : public Artboard
+{
 public:
     ArtboardInstance();
     ~ArtboardInstance() override;
diff --git a/include/rive/assets/asset.hpp b/include/rive/assets/asset.hpp
index b747b0e..16f8cef 100644
--- a/include/rive/assets/asset.hpp
+++ b/include/rive/assets/asset.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_ASSET_HPP_
 #include "rive/generated/assets/asset_base.hpp"
 #include <stdio.h>
-namespace rive {
-class Asset : public AssetBase {
+namespace rive
+{
+class Asset : public AssetBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/assets/drawable_asset.hpp b/include/rive/assets/drawable_asset.hpp
index 13c2f9a..ce2ddaf 100644
--- a/include/rive/assets/drawable_asset.hpp
+++ b/include/rive/assets/drawable_asset.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_DRAWABLE_ASSET_HPP_
 #include "rive/generated/assets/drawable_asset_base.hpp"
 #include <stdio.h>
-namespace rive {
-class DrawableAsset : public DrawableAssetBase {
+namespace rive
+{
+class DrawableAsset : public DrawableAssetBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/assets/file_asset.hpp b/include/rive/assets/file_asset.hpp
index fcf7bdb..d506558 100644
--- a/include/rive/assets/file_asset.hpp
+++ b/include/rive/assets/file_asset.hpp
@@ -4,9 +4,11 @@
 #include "rive/span.hpp"
 #include <string>
 
-namespace rive {
+namespace rive
+{
 class Factory;
-class FileAsset : public FileAssetBase {
+class FileAsset : public FileAssetBase
+{
 public:
     virtual bool decode(Span<const uint8_t>, Factory*) = 0;
     virtual std::string fileExtension() = 0;
diff --git a/include/rive/assets/file_asset_contents.hpp b/include/rive/assets/file_asset_contents.hpp
index 65477e2..c0afb30 100644
--- a/include/rive/assets/file_asset_contents.hpp
+++ b/include/rive/assets/file_asset_contents.hpp
@@ -3,8 +3,10 @@
 #include "rive/generated/assets/file_asset_contents_base.hpp"
 #include <cstdint>
 
-namespace rive {
-class FileAssetContents : public FileAssetContentsBase {
+namespace rive
+{
+class FileAssetContents : public FileAssetContentsBase
+{
 private:
     std::vector<uint8_t> m_Bytes;
 
diff --git a/include/rive/assets/file_asset_referencer.hpp b/include/rive/assets/file_asset_referencer.hpp
index 87eeb5e..fa0be00 100644
--- a/include/rive/assets/file_asset_referencer.hpp
+++ b/include/rive/assets/file_asset_referencer.hpp
@@ -1,9 +1,11 @@
 #ifndef _RIVE_FILE_ASSET_REFERENCER_HPP_
 #define _RIVE_FILE_ASSET_REFERENCER_HPP_
 
-namespace rive {
+namespace rive
+{
 class FileAsset;
-class FileAssetReferencer {
+class FileAssetReferencer
+{
 public:
     virtual ~FileAssetReferencer() {}
     virtual void assets(const std::vector<FileAsset*>& assets) = 0;
diff --git a/include/rive/assets/folder.hpp b/include/rive/assets/folder.hpp
index af31810..d51c359 100644
--- a/include/rive/assets/folder.hpp
+++ b/include/rive/assets/folder.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_FOLDER_HPP_
 #include "rive/generated/assets/folder_base.hpp"
 #include <stdio.h>
-namespace rive {
-class Folder : public FolderBase {
+namespace rive
+{
+class Folder : public FolderBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/assets/image_asset.hpp b/include/rive/assets/image_asset.hpp
index 0083e79..6d941fc 100644
--- a/include/rive/assets/image_asset.hpp
+++ b/include/rive/assets/image_asset.hpp
@@ -5,8 +5,10 @@
 #include "rive/renderer.hpp"
 #include <string>
 
-namespace rive {
-class ImageAsset : public ImageAssetBase {
+namespace rive
+{
+class ImageAsset : public ImageAssetBase
+{
 private:
     std::unique_ptr<RenderImage> m_RenderImage;
 
diff --git a/include/rive/backboard.hpp b/include/rive/backboard.hpp
index 1ace6fe..475011c 100644
--- a/include/rive/backboard.hpp
+++ b/include/rive/backboard.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_BACKBOARD_HPP_
 #define _RIVE_BACKBOARD_HPP_
 #include "rive/generated/backboard_base.hpp"
-namespace rive {
-class Backboard : public BackboardBase {};
+namespace rive
+{
+class Backboard : public BackboardBase
+{};
 } // namespace rive
 
 #endif
\ No newline at end of file
diff --git a/include/rive/bones/bone.hpp b/include/rive/bones/bone.hpp
index 7f3d5e1..d5d2a16 100644
--- a/include/rive/bones/bone.hpp
+++ b/include/rive/bones/bone.hpp
@@ -4,9 +4,11 @@
 #include <stdio.h>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Constraint;
-class Bone : public BoneBase {
+class Bone : public BoneBase
+{
 
 private:
     std::vector<Bone*> m_ChildBones;
diff --git a/include/rive/bones/cubic_weight.hpp b/include/rive/bones/cubic_weight.hpp
index fc75855..23af090 100644
--- a/include/rive/bones/cubic_weight.hpp
+++ b/include/rive/bones/cubic_weight.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_CUBIC_WEIGHT_HPP_
 #include "rive/generated/bones/cubic_weight_base.hpp"
 #include <stdio.h>
-namespace rive {
-class CubicWeight : public CubicWeightBase {
+namespace rive
+{
+class CubicWeight : public CubicWeightBase
+{
 private:
     Vec2D m_InTranslation;
     Vec2D m_OutTranslation;
diff --git a/include/rive/bones/root_bone.hpp b/include/rive/bones/root_bone.hpp
index 9a9cdd6..b6f4aeb 100644
--- a/include/rive/bones/root_bone.hpp
+++ b/include/rive/bones/root_bone.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_ROOT_BONE_HPP_
 #include "rive/generated/bones/root_bone_base.hpp"
 #include <stdio.h>
-namespace rive {
-class RootBone : public RootBoneBase {
+namespace rive
+{
+class RootBone : public RootBoneBase
+{
 public:
     StatusCode onAddedClean(CoreContext* context) override;
 
diff --git a/include/rive/bones/skeletal_component.hpp b/include/rive/bones/skeletal_component.hpp
index 3eaf647..03b49ef 100644
--- a/include/rive/bones/skeletal_component.hpp
+++ b/include/rive/bones/skeletal_component.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_SKELETAL_COMPONENT_HPP_
 #include "rive/generated/bones/skeletal_component_base.hpp"
 #include <stdio.h>
-namespace rive {
-class SkeletalComponent : public SkeletalComponentBase {
+namespace rive
+{
+class SkeletalComponent : public SkeletalComponentBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/bones/skin.hpp b/include/rive/bones/skin.hpp
index 20d3639..ba70420 100644
--- a/include/rive/bones/skin.hpp
+++ b/include/rive/bones/skin.hpp
@@ -6,12 +6,14 @@
 #include <stdio.h>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Tendon;
 class Vertex;
 class Skinnable;
 
-class Skin : public SkinBase {
+class Skin : public SkinBase
+{
     friend class Tendon;
 
 public:
diff --git a/include/rive/bones/skinnable.hpp b/include/rive/bones/skinnable.hpp
index 63ab749..345dbf9 100644
--- a/include/rive/bones/skinnable.hpp
+++ b/include/rive/bones/skinnable.hpp
@@ -3,11 +3,13 @@
 
 #include "rive/rive_types.hpp"
 
-namespace rive {
+namespace rive
+{
 class Skin;
 class Component;
 
-class Skinnable {
+class Skinnable
+{
     friend class Skin;
 
 private:
diff --git a/include/rive/bones/tendon.hpp b/include/rive/bones/tendon.hpp
index e37b086..6a8f456 100644
--- a/include/rive/bones/tendon.hpp
+++ b/include/rive/bones/tendon.hpp
@@ -5,9 +5,11 @@
 #include "rive/math/mat2d.hpp"
 #include <stdio.h>
 
-namespace rive {
+namespace rive
+{
 class Bone;
-class Tendon : public TendonBase {
+class Tendon : public TendonBase
+{
 private:
     Mat2D m_InverseBind;
     Bone* m_Bone = nullptr;
diff --git a/include/rive/bones/weight.hpp b/include/rive/bones/weight.hpp
index 0dcf361..4b8658f 100644
--- a/include/rive/bones/weight.hpp
+++ b/include/rive/bones/weight.hpp
@@ -4,8 +4,10 @@
 #include "rive/math/vec2d.hpp"
 #include <stdio.h>
 
-namespace rive {
-class Weight : public WeightBase {
+namespace rive
+{
+class Weight : public WeightBase
+{
 private:
     Vec2D m_Translation;
 
diff --git a/include/rive/command_path.hpp b/include/rive/command_path.hpp
index 2b6bc2f..3f77b15 100644
--- a/include/rive/command_path.hpp
+++ b/include/rive/command_path.hpp
@@ -4,11 +4,13 @@
 #include "rive/math/mat2d.hpp"
 #include "rive/math/path_types.hpp"
 
-namespace rive {
+namespace rive
+{
 class RenderPath;
 
 /// Abstract path used to build up commands used for rendering.
-class CommandPath {
+class CommandPath
+{
 public:
     virtual ~CommandPath() {}
     virtual void reset() = 0;
@@ -24,7 +26,8 @@
 
     // non-virtual helpers
 
-    void addRect(float x, float y, float width, float height) {
+    void addRect(float x, float y, float width, float height)
+    {
         moveTo(x, y);
         lineTo(x + width, y);
         lineTo(x + width, y + height);
diff --git a/include/rive/component.hpp b/include/rive/component.hpp
index 5ed9999..0c52a6c 100644
--- a/include/rive/component.hpp
+++ b/include/rive/component.hpp
@@ -5,11 +5,13 @@
 
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class ContainerComponent;
 class Artboard;
 
-class Component : public ComponentBase {
+class Component : public ComponentBase
+{
     friend class Artboard;
 
 private:
@@ -40,7 +42,8 @@
     unsigned int graphOrder() const { return m_GraphOrder; }
     bool addDirt(ComponentDirt value, bool recurse = false);
     inline bool hasDirt(ComponentDirt flag) const { return (m_Dirt & flag) == flag; }
-    static inline bool hasDirt(ComponentDirt value, ComponentDirt flag) {
+    static inline bool hasDirt(ComponentDirt value, ComponentDirt flag)
+    {
         return (value & flag) != ComponentDirt::None;
     }
 
diff --git a/include/rive/component_dirt.hpp b/include/rive/component_dirt.hpp
index a22331d..f0097e6 100644
--- a/include/rive/component_dirt.hpp
+++ b/include/rive/component_dirt.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_DIRTY_FLAGS_HPP_
 #include <type_traits>
 
-namespace rive {
-enum class ComponentDirt : unsigned short {
+namespace rive
+{
+enum class ComponentDirt : unsigned short
+{
     None = 0,
 
     Dependents = 1 << 0,
@@ -50,40 +52,47 @@
     Filthy = 0xFFFF
 };
 
-inline constexpr ComponentDirt operator&(ComponentDirt lhs, ComponentDirt rhs) {
+inline constexpr ComponentDirt operator&(ComponentDirt lhs, ComponentDirt rhs)
+{
     return static_cast<ComponentDirt>(static_cast<std::underlying_type<ComponentDirt>::type>(lhs) &
                                       static_cast<std::underlying_type<ComponentDirt>::type>(rhs));
 }
 
-inline constexpr ComponentDirt operator^(ComponentDirt lhs, ComponentDirt rhs) {
+inline constexpr ComponentDirt operator^(ComponentDirt lhs, ComponentDirt rhs)
+{
     return static_cast<ComponentDirt>(static_cast<std::underlying_type<ComponentDirt>::type>(lhs) ^
                                       static_cast<std::underlying_type<ComponentDirt>::type>(rhs));
 }
 
-inline constexpr ComponentDirt operator|(ComponentDirt lhs, ComponentDirt rhs) {
+inline constexpr ComponentDirt operator|(ComponentDirt lhs, ComponentDirt rhs)
+{
     return static_cast<ComponentDirt>(static_cast<std::underlying_type<ComponentDirt>::type>(lhs) |
                                       static_cast<std::underlying_type<ComponentDirt>::type>(rhs));
 }
 
-inline constexpr ComponentDirt operator~(ComponentDirt rhs) {
+inline constexpr ComponentDirt operator~(ComponentDirt rhs)
+{
     return static_cast<ComponentDirt>(~static_cast<std::underlying_type<ComponentDirt>::type>(rhs));
 }
 
-inline ComponentDirt& operator|=(ComponentDirt& lhs, ComponentDirt rhs) {
+inline ComponentDirt& operator|=(ComponentDirt& lhs, ComponentDirt rhs)
+{
     lhs = static_cast<ComponentDirt>(static_cast<std::underlying_type<ComponentDirt>::type>(lhs) |
                                      static_cast<std::underlying_type<ComponentDirt>::type>(rhs));
 
     return lhs;
 }
 
-inline ComponentDirt& operator&=(ComponentDirt& lhs, ComponentDirt rhs) {
+inline ComponentDirt& operator&=(ComponentDirt& lhs, ComponentDirt rhs)
+{
     lhs = static_cast<ComponentDirt>(static_cast<std::underlying_type<ComponentDirt>::type>(lhs) &
                                      static_cast<std::underlying_type<ComponentDirt>::type>(rhs));
 
     return lhs;
 }
 
-inline ComponentDirt& operator^=(ComponentDirt& lhs, ComponentDirt rhs) {
+inline ComponentDirt& operator^=(ComponentDirt& lhs, ComponentDirt rhs)
+{
     lhs = static_cast<ComponentDirt>(static_cast<std::underlying_type<ComponentDirt>::type>(lhs) ^
                                      static_cast<std::underlying_type<ComponentDirt>::type>(rhs));
 
diff --git a/include/rive/constraints/constraint.hpp b/include/rive/constraints/constraint.hpp
index cc7ca1d..bb29fb2 100644
--- a/include/rive/constraints/constraint.hpp
+++ b/include/rive/constraints/constraint.hpp
@@ -2,11 +2,13 @@
 #define _RIVE_CONSTRAINT_HPP_
 #include "rive/generated/constraints/constraint_base.hpp"
 #include <stdio.h>
-namespace rive {
+namespace rive
+{
 class TransformComponent;
 class Mat2D;
 
-class Constraint : public ConstraintBase {
+class Constraint : public ConstraintBase
+{
 public:
     void strengthChanged() override;
     StatusCode onAddedClean(CoreContext* context) override;
diff --git a/include/rive/constraints/distance_constraint.hpp b/include/rive/constraints/distance_constraint.hpp
index 3fd97f2..83a9f9f 100644
--- a/include/rive/constraints/distance_constraint.hpp
+++ b/include/rive/constraints/distance_constraint.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_DISTANCE_CONSTRAINT_HPP_
 #include "rive/generated/constraints/distance_constraint_base.hpp"
 #include <stdio.h>
-namespace rive {
-class DistanceConstraint : public DistanceConstraintBase {
+namespace rive
+{
+class DistanceConstraint : public DistanceConstraintBase
+{
 public:
     void constrain(TransformComponent* component) override;
 };
diff --git a/include/rive/constraints/ik_constraint.hpp b/include/rive/constraints/ik_constraint.hpp
index 51943ea..80a9892 100644
--- a/include/rive/constraints/ik_constraint.hpp
+++ b/include/rive/constraints/ik_constraint.hpp
@@ -5,11 +5,14 @@
 #include "rive/math/transform_components.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Bone;
-class IKConstraint : public IKConstraintBase {
+class IKConstraint : public IKConstraintBase
+{
 private:
-    struct BoneChainLink {
+    struct BoneChainLink
+    {
         int index;
         Bone* bone;
         float angle;
diff --git a/include/rive/constraints/rotation_constraint.hpp b/include/rive/constraints/rotation_constraint.hpp
index f9dc699..596ade3 100644
--- a/include/rive/constraints/rotation_constraint.hpp
+++ b/include/rive/constraints/rotation_constraint.hpp
@@ -3,8 +3,10 @@
 #include "rive/generated/constraints/rotation_constraint_base.hpp"
 #include "rive/math/transform_components.hpp"
 #include <stdio.h>
-namespace rive {
-class RotationConstraint : public RotationConstraintBase {
+namespace rive
+{
+class RotationConstraint : public RotationConstraintBase
+{
 private:
     TransformComponents m_ComponentsA;
     TransformComponents m_ComponentsB;
diff --git a/include/rive/constraints/scale_constraint.hpp b/include/rive/constraints/scale_constraint.hpp
index 6dad482..10d5030 100644
--- a/include/rive/constraints/scale_constraint.hpp
+++ b/include/rive/constraints/scale_constraint.hpp
@@ -3,8 +3,10 @@
 #include "rive/generated/constraints/scale_constraint_base.hpp"
 #include "rive/math/transform_components.hpp"
 #include <stdio.h>
-namespace rive {
-class ScaleConstraint : public ScaleConstraintBase {
+namespace rive
+{
+class ScaleConstraint : public ScaleConstraintBase
+{
 private:
     TransformComponents m_ComponentsA;
     TransformComponents m_ComponentsB;
diff --git a/include/rive/constraints/targeted_constraint.hpp b/include/rive/constraints/targeted_constraint.hpp
index eeb3665..7d08846 100644
--- a/include/rive/constraints/targeted_constraint.hpp
+++ b/include/rive/constraints/targeted_constraint.hpp
@@ -2,9 +2,11 @@
 #define _RIVE_TARGETED_CONSTRAINT_HPP_
 #include "rive/generated/constraints/targeted_constraint_base.hpp"
 #include <stdio.h>
-namespace rive {
+namespace rive
+{
 class TransformComponent;
-class TargetedConstraint : public TargetedConstraintBase {
+class TargetedConstraint : public TargetedConstraintBase
+{
 protected:
     TransformComponent* m_Target = nullptr;
 
diff --git a/include/rive/constraints/transform_component_constraint.hpp b/include/rive/constraints/transform_component_constraint.hpp
index b38650f..c890ca1 100644
--- a/include/rive/constraints/transform_component_constraint.hpp
+++ b/include/rive/constraints/transform_component_constraint.hpp
@@ -3,8 +3,10 @@
 #include "rive/generated/constraints/transform_component_constraint_base.hpp"
 #include "rive/transform_space.hpp"
 #include <stdio.h>
-namespace rive {
-class TransformComponentConstraint : public TransformComponentConstraintBase {
+namespace rive
+{
+class TransformComponentConstraint : public TransformComponentConstraintBase
+{
 public:
     TransformSpace minMaxSpace() const { return (TransformSpace)minMaxSpaceValue(); }
 };
diff --git a/include/rive/constraints/transform_component_constraint_y.hpp b/include/rive/constraints/transform_component_constraint_y.hpp
index b755a39..05aaf3d 100644
--- a/include/rive/constraints/transform_component_constraint_y.hpp
+++ b/include/rive/constraints/transform_component_constraint_y.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSFORM_COMPONENT_CONSTRAINT_Y_HPP_
 #include "rive/generated/constraints/transform_component_constraint_y_base.hpp"
 #include <stdio.h>
-namespace rive {
-class TransformComponentConstraintY : public TransformComponentConstraintYBase {
+namespace rive
+{
+class TransformComponentConstraintY : public TransformComponentConstraintYBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/constraints/transform_constraint.hpp b/include/rive/constraints/transform_constraint.hpp
index 5fec7b6..3368b08 100644
--- a/include/rive/constraints/transform_constraint.hpp
+++ b/include/rive/constraints/transform_constraint.hpp
@@ -4,8 +4,10 @@
 #include "rive/math/transform_components.hpp"
 
 #include <stdio.h>
-namespace rive {
-class TransformConstraint : public TransformConstraintBase {
+namespace rive
+{
+class TransformConstraint : public TransformConstraintBase
+{
 private:
     TransformComponents m_ComponentsA;
     TransformComponents m_ComponentsB;
diff --git a/include/rive/constraints/transform_space_constraint.hpp b/include/rive/constraints/transform_space_constraint.hpp
index 6d2b322..fe7be1a 100644
--- a/include/rive/constraints/transform_space_constraint.hpp
+++ b/include/rive/constraints/transform_space_constraint.hpp
@@ -3,8 +3,10 @@
 #include "rive/generated/constraints/transform_space_constraint_base.hpp"
 #include "rive/transform_space.hpp"
 #include <stdio.h>
-namespace rive {
-class TransformSpaceConstraint : public TransformSpaceConstraintBase {
+namespace rive
+{
+class TransformSpaceConstraint : public TransformSpaceConstraintBase
+{
 public:
     TransformSpace sourceSpace() const { return (TransformSpace)sourceSpaceValue(); }
     TransformSpace destSpace() const { return (TransformSpace)destSpaceValue(); }
diff --git a/include/rive/constraints/translation_constraint.hpp b/include/rive/constraints/translation_constraint.hpp
index 9311b4b..08c2cf3 100644
--- a/include/rive/constraints/translation_constraint.hpp
+++ b/include/rive/constraints/translation_constraint.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSLATION_CONSTRAINT_HPP_
 #include "rive/generated/constraints/translation_constraint_base.hpp"
 #include <stdio.h>
-namespace rive {
-class TranslationConstraint : public TranslationConstraintBase {
+namespace rive
+{
+class TranslationConstraint : public TranslationConstraintBase
+{
 public:
     void constrain(TransformComponent* component) override;
 };
diff --git a/include/rive/container_component.hpp b/include/rive/container_component.hpp
index ba4f9f6..81b38a3 100644
--- a/include/rive/container_component.hpp
+++ b/include/rive/container_component.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_CONTAINER_COMPONENT_HPP_
 #include "rive/generated/container_component_base.hpp"
 #include <vector>
-namespace rive {
-class ContainerComponent : public ContainerComponentBase {};
+namespace rive
+{
+class ContainerComponent : public ContainerComponentBase
+{};
 } // namespace rive
 
 #endif
\ No newline at end of file
diff --git a/include/rive/core.hpp b/include/rive/core.hpp
index 0c97734..832fccd 100644
--- a/include/rive/core.hpp
+++ b/include/rive/core.hpp
@@ -5,10 +5,12 @@
 #include "rive/core/binary_reader.hpp"
 #include "rive/status_code.hpp"
 
-namespace rive {
+namespace rive
+{
 class CoreContext;
 class ImportStack;
-class Core {
+class Core
+{
 public:
     static const int invalidPropertyKey = 0;
     virtual ~Core() {}
@@ -17,7 +19,8 @@
     virtual bool deserialize(uint16_t propertyKey, BinaryReader& reader) = 0;
 
     template <typename T> inline bool is() const { return isTypeOf(T::typeKey); }
-    template <typename T> inline T* as() {
+    template <typename T> inline T* as()
+    {
         assert(is<T>());
         return reinterpret_cast<T*>(this);
     }
@@ -25,7 +28,8 @@
     /// Make a shallow copy of the object.
     virtual Core* clone() const { return nullptr; }
 
-    template <typename T> inline const T* as() const {
+    template <typename T> inline const T* as() const
+    {
         assert(is<T>());
         return reinterpret_cast<const T*>(this);
     }
diff --git a/include/rive/core/binary_reader.hpp b/include/rive/core/binary_reader.hpp
index a1b9591..c0c2c3b 100644
--- a/include/rive/core/binary_reader.hpp
+++ b/include/rive/core/binary_reader.hpp
@@ -7,8 +7,10 @@
 #include "rive/span.hpp"
 #include "rive/core/type_conversions.hpp"
 
-namespace rive {
-class BinaryReader {
+namespace rive
+{
+class BinaryReader
+{
 private:
     Span<const uint8_t> m_Bytes;
     const uint8_t* m_Position;
@@ -37,9 +39,11 @@
 
     // This will cast the uint read to the requested size, but if the
     // raw value was out-of-range, instead returns 0 and sets the IntRangeError.
-    template <typename T> T readVarUintAs() {
+    template <typename T> T readVarUintAs()
+    {
         auto value = this->readVarUint64();
-        if (!fitsIn<T>(value)) {
+        if (!fitsIn<T>(value))
+        {
             value = 0;
             this->intRangeError();
         }
diff --git a/include/rive/core/field_types/core_bool_type.hpp b/include/rive/core/field_types/core_bool_type.hpp
index 3c699cf..c6b0fcc 100644
--- a/include/rive/core/field_types/core_bool_type.hpp
+++ b/include/rive/core/field_types/core_bool_type.hpp
@@ -1,9 +1,11 @@
 #ifndef _RIVE_CORE_BOOL_TYPE_HPP_
 #define _RIVE_CORE_BOOL_TYPE_HPP_
 
-namespace rive {
+namespace rive
+{
 class BinaryReader;
-class CoreBoolType {
+class CoreBoolType
+{
 public:
     static const int id = 0;
     static bool deserialize(BinaryReader& reader);
diff --git a/include/rive/core/field_types/core_bytes_type.hpp b/include/rive/core/field_types/core_bytes_type.hpp
index 879619a..90f1886 100644
--- a/include/rive/core/field_types/core_bytes_type.hpp
+++ b/include/rive/core/field_types/core_bytes_type.hpp
@@ -4,9 +4,11 @@
 #include "rive/span.hpp"
 #include <cstdint>
 
-namespace rive {
+namespace rive
+{
 class BinaryReader;
-class CoreBytesType {
+class CoreBytesType
+{
 public:
     static const int id = 1;
     static Span<const uint8_t> deserialize(BinaryReader& reader);
diff --git a/include/rive/core/field_types/core_color_type.hpp b/include/rive/core/field_types/core_color_type.hpp
index 16b8f94..afacba9 100644
--- a/include/rive/core/field_types/core_color_type.hpp
+++ b/include/rive/core/field_types/core_color_type.hpp
@@ -1,9 +1,11 @@
 #ifndef _RIVE_CORE_COLOR_TYPE_HPP_
 #define _RIVE_CORE_COLOR_TYPE_HPP_
 
-namespace rive {
+namespace rive
+{
 class BinaryReader;
-class CoreColorType {
+class CoreColorType
+{
 public:
     static const int id = 3;
     static int deserialize(BinaryReader& reader);
diff --git a/include/rive/core/field_types/core_double_type.hpp b/include/rive/core/field_types/core_double_type.hpp
index c46c9e2..6351572 100644
--- a/include/rive/core/field_types/core_double_type.hpp
+++ b/include/rive/core/field_types/core_double_type.hpp
@@ -1,9 +1,11 @@
 #ifndef _RIVE_CORE_DOUBLE_TYPE_HPP_
 #define _RIVE_CORE_DOUBLE_TYPE_HPP_
 
-namespace rive {
+namespace rive
+{
 class BinaryReader;
-class CoreDoubleType {
+class CoreDoubleType
+{
 public:
     static const int id = 2;
     static float deserialize(BinaryReader& reader);
diff --git a/include/rive/core/field_types/core_string_type.hpp b/include/rive/core/field_types/core_string_type.hpp
index 1719a60..5962545 100644
--- a/include/rive/core/field_types/core_string_type.hpp
+++ b/include/rive/core/field_types/core_string_type.hpp
@@ -3,9 +3,11 @@
 
 #include <string>
 
-namespace rive {
+namespace rive
+{
 class BinaryReader;
-class CoreStringType {
+class CoreStringType
+{
 public:
     static const int id = 1;
     static std::string deserialize(BinaryReader& reader);
diff --git a/include/rive/core/field_types/core_uint_type.hpp b/include/rive/core/field_types/core_uint_type.hpp
index 3faad66..af9c399 100644
--- a/include/rive/core/field_types/core_uint_type.hpp
+++ b/include/rive/core/field_types/core_uint_type.hpp
@@ -1,9 +1,11 @@
 #ifndef _RIVE_CORE_UINT_TYPE_HPP_
 #define _RIVE_CORE_UINT_TYPE_HPP_
 
-namespace rive {
+namespace rive
+{
 class BinaryReader;
-class CoreUintType {
+class CoreUintType
+{
 public:
     static const int id = 0;
     static unsigned int deserialize(BinaryReader& reader);
diff --git a/include/rive/core/reader.h b/include/rive/core/reader.h
index 9e6fa22..2c9a2fc 100644
--- a/include/rive/core/reader.h
+++ b/include/rive/core/reader.h
@@ -1,8 +1,10 @@
 #include <stdlib.h>
 #include <string.h>
 
-static bool is_big_endian(void) {
-    union {
+static bool is_big_endian(void)
+{
+    union
+    {
         uint32_t i;
         char c[4];
     } bint = {0x01020304};
@@ -12,14 +14,17 @@
 
 /* Decode an unsigned int LEB128 at buf into r, returning the nr of bytes read.
  */
-inline size_t decode_uint_leb(const uint8_t* buf, const uint8_t* buf_end, uint64_t* r) {
+inline size_t decode_uint_leb(const uint8_t* buf, const uint8_t* buf_end, uint64_t* r)
+{
     const uint8_t* p = buf;
     uint8_t shift = 0;
     uint64_t result = 0;
     uint8_t byte;
 
-    do {
-        if (p >= buf_end) {
+    do
+    {
+        if (p >= buf_end)
+        {
             return 0;
         }
         byte = *p++;
@@ -33,13 +38,16 @@
 /* Decodes a string
  */
 inline uint64_t
-decode_string(uint64_t str_len, const uint8_t* buf, const uint8_t* buf_end, char* char_buf) {
+decode_string(uint64_t str_len, const uint8_t* buf, const uint8_t* buf_end, char* char_buf)
+{
     // Return zero bytes read on buffer overflow
-    if (buf_end < buf + str_len) {
+    if (buf_end < buf + str_len)
+    {
         return 0;
     }
     const uint8_t* p = buf;
-    for (int i = 0; i < str_len; i++) {
+    for (int i = 0; i < str_len; i++)
+    {
         char_buf[i] = *p++;
     }
     // Add the null terminator
@@ -49,15 +57,20 @@
 
 /* Decodes a float (4 bytes)
  */
-inline size_t decode_float(const uint8_t* buf, const uint8_t* buf_end, float* r) {
+inline size_t decode_float(const uint8_t* buf, const uint8_t* buf_end, float* r)
+{
     // Return zero bytes read on buffer overflow
-    if (buf_end - buf < (unsigned)sizeof(float)) {
+    if (buf_end - buf < (unsigned)sizeof(float))
+    {
         return 0;
     }
-    if (is_big_endian()) {
+    if (is_big_endian())
+    {
         uint8_t inverted[4] = {buf[3], buf[2], buf[1], buf[0]};
         memcpy(r, inverted, sizeof(float));
-    } else {
+    }
+    else
+    {
         memcpy(r, buf, sizeof(float));
     }
     return sizeof(float);
@@ -65,9 +78,11 @@
 
 /* Decodes a single byte
  */
-inline size_t decode_uint_8(const uint8_t* buf, const uint8_t* buf_end, uint8_t* r) {
+inline size_t decode_uint_8(const uint8_t* buf, const uint8_t* buf_end, uint8_t* r)
+{
     // Return zero bytes read on buffer overflow
-    if (buf_end - buf < (unsigned)sizeof(uint8_t)) {
+    if (buf_end - buf < (unsigned)sizeof(uint8_t))
+    {
         return 0;
     }
     memcpy(r, buf, sizeof(uint8_t));
@@ -76,15 +91,20 @@
 
 /* Decodes a 32 bit unsigned integer.
  */
-inline size_t decode_uint_32(const uint8_t* buf, const uint8_t* buf_end, uint32_t* r) {
+inline size_t decode_uint_32(const uint8_t* buf, const uint8_t* buf_end, uint32_t* r)
+{
     // Return zero bytes read on buffer overflow
-    if (buf_end - buf < (unsigned)sizeof(uint32_t)) {
+    if (buf_end - buf < (unsigned)sizeof(uint32_t))
+    {
         return 0;
     }
-    if (is_big_endian()) {
+    if (is_big_endian())
+    {
         uint8_t inverted[4] = {buf[3], buf[2], buf[1], buf[0]};
         memcpy(r, inverted, sizeof(uint32_t));
-    } else {
+    }
+    else
+    {
         memcpy(r, buf, sizeof(uint32_t));
     }
     return sizeof(uint32_t);
diff --git a/include/rive/core/type_conversions.hpp b/include/rive/core/type_conversions.hpp
index e51162b..406d9fc 100644
--- a/include/rive/core/type_conversions.hpp
+++ b/include/rive/core/type_conversions.hpp
@@ -8,13 +8,16 @@
 #include "rive/rive_types.hpp"
 #include <limits>
 
-namespace rive {
+namespace rive
+{
 
-template <typename T> bool fitsIn(intmax_t x) {
+template <typename T> bool fitsIn(intmax_t x)
+{
     return x >= std::numeric_limits<T>::min() && x <= std::numeric_limits<T>::max();
 }
 
-template <typename T> T castTo(intmax_t x) {
+template <typename T> T castTo(intmax_t x)
+{
     assert(sizeof(T) <= 4); // don't cast to 64bit types
     assert(fitsIn<T>(x));
     return static_cast<T>(x);
diff --git a/include/rive/core_context.hpp b/include/rive/core_context.hpp
index c9baafb..655c751 100644
--- a/include/rive/core_context.hpp
+++ b/include/rive/core_context.hpp
@@ -3,10 +3,12 @@
 
 #include "rive/rive_types.hpp"
 
-namespace rive {
+namespace rive
+{
 class Artboard;
 class Core;
-class CoreContext {
+class CoreContext
+{
 public:
     virtual ~CoreContext() {}
     virtual Core* resolve(uint32_t id) const = 0;
diff --git a/include/rive/dependency_sorter.hpp b/include/rive/dependency_sorter.hpp
index aa9ef5f..3c9cea3 100644
--- a/include/rive/dependency_sorter.hpp
+++ b/include/rive/dependency_sorter.hpp
@@ -4,9 +4,11 @@
 #include <unordered_set>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Component;
-class DependencySorter {
+class DependencySorter
+{
 private:
     std::unordered_set<Component*> m_Perm;
     std::unordered_set<Component*> m_Temp;
diff --git a/include/rive/draw_rules.hpp b/include/rive/draw_rules.hpp
index 27a775d..7ff58e5 100644
--- a/include/rive/draw_rules.hpp
+++ b/include/rive/draw_rules.hpp
@@ -2,9 +2,11 @@
 #define _RIVE_DRAW_RULES_HPP_
 #include "rive/generated/draw_rules_base.hpp"
 #include <stdio.h>
-namespace rive {
+namespace rive
+{
 class DrawTarget;
-class DrawRules : public DrawRulesBase {
+class DrawRules : public DrawRulesBase
+{
 private:
     DrawTarget* m_ActiveTarget = nullptr;
 
diff --git a/include/rive/draw_target.hpp b/include/rive/draw_target.hpp
index e214572..b37113c 100644
--- a/include/rive/draw_target.hpp
+++ b/include/rive/draw_target.hpp
@@ -5,10 +5,12 @@
 #include "rive/generated/draw_target_base.hpp"
 #include <stdio.h>
 
-namespace rive {
+namespace rive
+{
 class Drawable;
 class Artboard;
-class DrawTarget : public DrawTargetBase {
+class DrawTarget : public DrawTargetBase
+{
     friend class Artboard;
 
 private:
diff --git a/include/rive/draw_target_placement.hpp b/include/rive/draw_target_placement.hpp
index 33579b7..b2e45cd 100644
--- a/include/rive/draw_target_placement.hpp
+++ b/include/rive/draw_target_placement.hpp
@@ -1,6 +1,11 @@
 #ifndef _RIVE_DRAW_TARGET_PLACEMENT_HPP_
 #define _RIVE_DRAW_TARGET_PLACEMENT_HPP_
-namespace rive {
-enum class DrawTargetPlacement : unsigned char { before = 0, after = 1 };
+namespace rive
+{
+enum class DrawTargetPlacement : unsigned char
+{
+    before = 0,
+    after = 1
+};
 }
 #endif
\ No newline at end of file
diff --git a/include/rive/drawable.hpp b/include/rive/drawable.hpp
index 1699e71..aa048b1 100644
--- a/include/rive/drawable.hpp
+++ b/include/rive/drawable.hpp
@@ -5,12 +5,14 @@
 #include "rive/renderer.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class ClippingShape;
 class Artboard;
 class DrawRules;
 
-class Drawable : public DrawableBase {
+class Drawable : public DrawableBase
+{
     friend class Artboard;
 
 private:
@@ -29,7 +31,8 @@
     void addClippingShape(ClippingShape* shape);
     inline const std::vector<ClippingShape*>& clippingShapes() const { return m_ClippingShapes; }
 
-    inline bool isHidden() const {
+    inline bool isHidden() const
+    {
         // For now we have a single drawable flag, when we have more we can
         // make an actual enum for this.
         return (drawableFlags() & 0x1) == 0x1;
diff --git a/include/rive/factory.hpp b/include/rive/factory.hpp
index f60aeec..fd0232d 100644
--- a/include/rive/factory.hpp
+++ b/include/rive/factory.hpp
@@ -16,11 +16,13 @@
 #include <stdio.h>
 #include <cstdint>
 
-namespace rive {
+namespace rive
+{
 
 class RawPath;
 
-class Factory {
+class Factory
+{
 public:
     Factory() {}
     virtual ~Factory() {}
diff --git a/include/rive/file.hpp b/include/rive/file.hpp
index 60ed1e6..3f79648 100644
--- a/include/rive/file.hpp
+++ b/include/rive/file.hpp
@@ -11,7 +11,8 @@
 ///
 /// Default namespace for Rive Cpp runtime code.
 ///
-namespace rive {
+namespace rive
+{
 class BinaryReader;
 class RuntimeHeader;
 class Factory;
@@ -19,7 +20,8 @@
 ///
 /// Tracks the success/failure result when importing a Rive file.
 ///
-enum class ImportResult {
+enum class ImportResult
+{
     /// Indicates that a file's been successfully imported.
     success,
     /// Indicates that the Rive file is not supported by this runtime.
@@ -31,7 +33,8 @@
 ///
 /// A Rive file.
 ///
-class File {
+class File
+{
 public:
     /// Major version number supported by the runtime.
     static const int majorVersion = 7;
diff --git a/include/rive/file_asset_resolver.hpp b/include/rive/file_asset_resolver.hpp
index 36f58b8..9f8b7bf 100644
--- a/include/rive/file_asset_resolver.hpp
+++ b/include/rive/file_asset_resolver.hpp
@@ -4,9 +4,11 @@
 #include <cstdint>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class FileAsset;
-class FileAssetResolver {
+class FileAssetResolver
+{
 public:
     virtual ~FileAssetResolver() {}
 
diff --git a/include/rive/generated/animation/animation_base.hpp b/include/rive/generated/animation/animation_base.hpp
index 60fde7c..7a11b3f 100644
--- a/include/rive/generated/animation/animation_base.hpp
+++ b/include/rive/generated/animation/animation_base.hpp
@@ -3,8 +3,10 @@
 #include <string>
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_string_type.hpp"
-namespace rive {
-class AnimationBase : public Core {
+namespace rive
+{
+class AnimationBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -13,10 +15,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case AnimationBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case AnimationBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline const std::string& name() const { return m_Name; }
-    void name(std::string value) {
-        if (m_Name == value) {
+    void name(std::string value)
+    {
+        if (m_Name == value)
+        {
             return;
         }
         m_Name = value;
@@ -40,9 +48,13 @@
     Core* clone() const override;
     void copy(const AnimationBase& object) { m_Name = object.m_Name; }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case namePropertyKey: m_Name = CoreStringType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case namePropertyKey:
+                m_Name = CoreStringType::deserialize(reader);
+                return true;
         }
         return false;
     }
diff --git a/include/rive/generated/animation/animation_state_base.hpp b/include/rive/generated/animation/animation_state_base.hpp
index 8b5c6c7..ee85b58 100644
--- a/include/rive/generated/animation/animation_state_base.hpp
+++ b/include/rive/generated/animation/animation_state_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_ANIMATION_STATE_BASE_HPP_
 #include "rive/animation/layer_state.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class AnimationStateBase : public LayerState {
+namespace rive
+{
+class AnimationStateBase : public LayerState
+{
 protected:
     typedef LayerState Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case AnimationStateBase::typeKey:
             case LayerStateBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline uint32_t animationId() const { return m_AnimationId; }
-    void animationId(uint32_t value) {
-        if (m_AnimationId == value) {
+    void animationId(uint32_t value)
+    {
+        if (m_AnimationId == value)
+        {
             return;
         }
         m_AnimationId = value;
@@ -39,13 +47,16 @@
     }
 
     Core* clone() const override;
-    void copy(const AnimationStateBase& object) {
+    void copy(const AnimationStateBase& object)
+    {
         m_AnimationId = object.m_AnimationId;
         LayerState::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case animationIdPropertyKey:
                 m_AnimationId = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/animation/any_state_base.hpp b/include/rive/generated/animation/any_state_base.hpp
index dba19c4..d41bd12 100644
--- a/include/rive/generated/animation/any_state_base.hpp
+++ b/include/rive/generated/animation/any_state_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_ANY_STATE_BASE_HPP_
 #define _RIVE_ANY_STATE_BASE_HPP_
 #include "rive/animation/layer_state.hpp"
-namespace rive {
-class AnyStateBase : public LayerState {
+namespace rive
+{
+class AnyStateBase : public LayerState
+{
 protected:
     typedef LayerState Super;
 
@@ -11,12 +13,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case AnyStateBase::typeKey:
             case LayerStateBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/blend_animation_1d_base.hpp b/include/rive/generated/animation/blend_animation_1d_base.hpp
index fac5089..c6b147e 100644
--- a/include/rive/generated/animation/blend_animation_1d_base.hpp
+++ b/include/rive/generated/animation/blend_animation_1d_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BLEND_ANIMATION1_DBASE_HPP_
 #include "rive/animation/blend_animation.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class BlendAnimation1DBase : public BlendAnimation {
+namespace rive
+{
+class BlendAnimation1DBase : public BlendAnimation
+{
 protected:
     typedef BlendAnimation Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case BlendAnimation1DBase::typeKey:
-            case BlendAnimationBase::typeKey: return true;
-            default: return false;
+            case BlendAnimationBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline float value() const { return m_Value; }
-    void value(float value) {
-        if (m_Value == value) {
+    void value(float value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -38,14 +46,19 @@
     }
 
     Core* clone() const override;
-    void copy(const BlendAnimation1DBase& object) {
+    void copy(const BlendAnimation1DBase& object)
+    {
         m_Value = object.m_Value;
         BlendAnimation::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return BlendAnimation::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/blend_animation_base.hpp b/include/rive/generated/animation/blend_animation_base.hpp
index 4ebb876..5247bcb 100644
--- a/include/rive/generated/animation/blend_animation_base.hpp
+++ b/include/rive/generated/animation/blend_animation_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BLEND_ANIMATION_BASE_HPP_
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class BlendAnimationBase : public Core {
+namespace rive
+{
+class BlendAnimationBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -12,10 +14,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case BlendAnimationBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case BlendAnimationBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -28,8 +34,10 @@
 
 public:
     inline uint32_t animationId() const { return m_AnimationId; }
-    void animationId(uint32_t value) {
-        if (m_AnimationId == value) {
+    void animationId(uint32_t value)
+    {
+        if (m_AnimationId == value)
+        {
             return;
         }
         m_AnimationId = value;
@@ -38,8 +46,10 @@
 
     void copy(const BlendAnimationBase& object) { m_AnimationId = object.m_AnimationId; }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case animationIdPropertyKey:
                 m_AnimationId = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/animation/blend_animation_direct_base.hpp b/include/rive/generated/animation/blend_animation_direct_base.hpp
index 5eca77e..74ce655 100644
--- a/include/rive/generated/animation/blend_animation_direct_base.hpp
+++ b/include/rive/generated/animation/blend_animation_direct_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BLEND_ANIMATION_DIRECT_BASE_HPP_
 #include "rive/animation/blend_animation.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class BlendAnimationDirectBase : public BlendAnimation {
+namespace rive
+{
+class BlendAnimationDirectBase : public BlendAnimation
+{
 protected:
     typedef BlendAnimation Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case BlendAnimationDirectBase::typeKey:
-            case BlendAnimationBase::typeKey: return true;
-            default: return false;
+            case BlendAnimationBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline uint32_t inputId() const { return m_InputId; }
-    void inputId(uint32_t value) {
-        if (m_InputId == value) {
+    void inputId(uint32_t value)
+    {
+        if (m_InputId == value)
+        {
             return;
         }
         m_InputId = value;
@@ -38,14 +46,19 @@
     }
 
     Core* clone() const override;
-    void copy(const BlendAnimationDirectBase& object) {
+    void copy(const BlendAnimationDirectBase& object)
+    {
         m_InputId = object.m_InputId;
         BlendAnimation::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case inputIdPropertyKey: m_InputId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case inputIdPropertyKey:
+                m_InputId = CoreUintType::deserialize(reader);
+                return true;
         }
         return BlendAnimation::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/blend_state_1d_base.hpp b/include/rive/generated/animation/blend_state_1d_base.hpp
index 91e3ebb..8b1ba7a 100644
--- a/include/rive/generated/animation/blend_state_1d_base.hpp
+++ b/include/rive/generated/animation/blend_state_1d_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BLEND_STATE1_DBASE_HPP_
 #include "rive/animation/blend_state.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class BlendState1DBase : public BlendState {
+namespace rive
+{
+class BlendState1DBase : public BlendState
+{
 protected:
     typedef BlendState Super;
 
@@ -12,13 +14,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case BlendState1DBase::typeKey:
             case BlendStateBase::typeKey:
             case LayerStateBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -31,8 +37,10 @@
 
 public:
     inline uint32_t inputId() const { return m_InputId; }
-    void inputId(uint32_t value) {
-        if (m_InputId == value) {
+    void inputId(uint32_t value)
+    {
+        if (m_InputId == value)
+        {
             return;
         }
         m_InputId = value;
@@ -40,14 +48,19 @@
     }
 
     Core* clone() const override;
-    void copy(const BlendState1DBase& object) {
+    void copy(const BlendState1DBase& object)
+    {
         m_InputId = object.m_InputId;
         BlendState::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case inputIdPropertyKey: m_InputId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case inputIdPropertyKey:
+                m_InputId = CoreUintType::deserialize(reader);
+                return true;
         }
         return BlendState::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/blend_state_base.hpp b/include/rive/generated/animation/blend_state_base.hpp
index 926841c..31ee3bc 100644
--- a/include/rive/generated/animation/blend_state_base.hpp
+++ b/include/rive/generated/animation/blend_state_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_BLEND_STATE_BASE_HPP_
 #define _RIVE_BLEND_STATE_BASE_HPP_
 #include "rive/animation/layer_state.hpp"
-namespace rive {
-class BlendStateBase : public LayerState {
+namespace rive
+{
+class BlendStateBase : public LayerState
+{
 protected:
     typedef LayerState Super;
 
@@ -11,12 +13,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case BlendStateBase::typeKey:
             case LayerStateBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/blend_state_direct_base.hpp b/include/rive/generated/animation/blend_state_direct_base.hpp
index 2a15fbb..232a90b 100644
--- a/include/rive/generated/animation/blend_state_direct_base.hpp
+++ b/include/rive/generated/animation/blend_state_direct_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_BLEND_STATE_DIRECT_BASE_HPP_
 #define _RIVE_BLEND_STATE_DIRECT_BASE_HPP_
 #include "rive/animation/blend_state.hpp"
-namespace rive {
-class BlendStateDirectBase : public BlendState {
+namespace rive
+{
+class BlendStateDirectBase : public BlendState
+{
 protected:
     typedef BlendState Super;
 
@@ -11,13 +13,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case BlendStateDirectBase::typeKey:
             case BlendStateBase::typeKey:
             case LayerStateBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/blend_state_transition_base.hpp b/include/rive/generated/animation/blend_state_transition_base.hpp
index 7cd4f44..6494ee8 100644
--- a/include/rive/generated/animation/blend_state_transition_base.hpp
+++ b/include/rive/generated/animation/blend_state_transition_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BLEND_STATE_TRANSITION_BASE_HPP_
 #include "rive/animation/state_transition.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class BlendStateTransitionBase : public StateTransition {
+namespace rive
+{
+class BlendStateTransitionBase : public StateTransition
+{
 protected:
     typedef StateTransition Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case BlendStateTransitionBase::typeKey:
             case StateTransitionBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline uint32_t exitBlendAnimationId() const { return m_ExitBlendAnimationId; }
-    void exitBlendAnimationId(uint32_t value) {
-        if (m_ExitBlendAnimationId == value) {
+    void exitBlendAnimationId(uint32_t value)
+    {
+        if (m_ExitBlendAnimationId == value)
+        {
             return;
         }
         m_ExitBlendAnimationId = value;
@@ -39,13 +47,16 @@
     }
 
     Core* clone() const override;
-    void copy(const BlendStateTransitionBase& object) {
+    void copy(const BlendStateTransitionBase& object)
+    {
         m_ExitBlendAnimationId = object.m_ExitBlendAnimationId;
         StateTransition::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case exitBlendAnimationIdPropertyKey:
                 m_ExitBlendAnimationId = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/animation/cubic_interpolator_base.hpp b/include/rive/generated/animation/cubic_interpolator_base.hpp
index 15eb866..57abc03 100644
--- a/include/rive/generated/animation/cubic_interpolator_base.hpp
+++ b/include/rive/generated/animation/cubic_interpolator_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_CUBIC_INTERPOLATOR_BASE_HPP_
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class CubicInterpolatorBase : public Core {
+namespace rive
+{
+class CubicInterpolatorBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -12,10 +14,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case CubicInterpolatorBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case CubicInterpolatorBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -34,8 +40,10 @@
 
 public:
     inline float x1() const { return m_X1; }
-    void x1(float value) {
-        if (m_X1 == value) {
+    void x1(float value)
+    {
+        if (m_X1 == value)
+        {
             return;
         }
         m_X1 = value;
@@ -43,8 +51,10 @@
     }
 
     inline float y1() const { return m_Y1; }
-    void y1(float value) {
-        if (m_Y1 == value) {
+    void y1(float value)
+    {
+        if (m_Y1 == value)
+        {
             return;
         }
         m_Y1 = value;
@@ -52,8 +62,10 @@
     }
 
     inline float x2() const { return m_X2; }
-    void x2(float value) {
-        if (m_X2 == value) {
+    void x2(float value)
+    {
+        if (m_X2 == value)
+        {
             return;
         }
         m_X2 = value;
@@ -61,8 +73,10 @@
     }
 
     inline float y2() const { return m_Y2; }
-    void y2(float value) {
-        if (m_Y2 == value) {
+    void y2(float value)
+    {
+        if (m_Y2 == value)
+        {
             return;
         }
         m_Y2 = value;
@@ -70,19 +84,30 @@
     }
 
     Core* clone() const override;
-    void copy(const CubicInterpolatorBase& object) {
+    void copy(const CubicInterpolatorBase& object)
+    {
         m_X1 = object.m_X1;
         m_Y1 = object.m_Y1;
         m_X2 = object.m_X2;
         m_Y2 = object.m_Y2;
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case x1PropertyKey: m_X1 = CoreDoubleType::deserialize(reader); return true;
-            case y1PropertyKey: m_Y1 = CoreDoubleType::deserialize(reader); return true;
-            case x2PropertyKey: m_X2 = CoreDoubleType::deserialize(reader); return true;
-            case y2PropertyKey: m_Y2 = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case x1PropertyKey:
+                m_X1 = CoreDoubleType::deserialize(reader);
+                return true;
+            case y1PropertyKey:
+                m_Y1 = CoreDoubleType::deserialize(reader);
+                return true;
+            case x2PropertyKey:
+                m_X2 = CoreDoubleType::deserialize(reader);
+                return true;
+            case y2PropertyKey:
+                m_Y2 = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return false;
     }
diff --git a/include/rive/generated/animation/entry_state_base.hpp b/include/rive/generated/animation/entry_state_base.hpp
index 0b2102c..69b913a 100644
--- a/include/rive/generated/animation/entry_state_base.hpp
+++ b/include/rive/generated/animation/entry_state_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_ENTRY_STATE_BASE_HPP_
 #define _RIVE_ENTRY_STATE_BASE_HPP_
 #include "rive/animation/layer_state.hpp"
-namespace rive {
-class EntryStateBase : public LayerState {
+namespace rive
+{
+class EntryStateBase : public LayerState
+{
 protected:
     typedef LayerState Super;
 
@@ -11,12 +13,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case EntryStateBase::typeKey:
             case LayerStateBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/exit_state_base.hpp b/include/rive/generated/animation/exit_state_base.hpp
index 32993bb..b69f10f 100644
--- a/include/rive/generated/animation/exit_state_base.hpp
+++ b/include/rive/generated/animation/exit_state_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_EXIT_STATE_BASE_HPP_
 #define _RIVE_EXIT_STATE_BASE_HPP_
 #include "rive/animation/layer_state.hpp"
-namespace rive {
-class ExitStateBase : public LayerState {
+namespace rive
+{
+class ExitStateBase : public LayerState
+{
 protected:
     typedef LayerState Super;
 
@@ -11,12 +13,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ExitStateBase::typeKey:
             case LayerStateBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/keyed_object_base.hpp b/include/rive/generated/animation/keyed_object_base.hpp
index 2b532d9..37d2f51 100644
--- a/include/rive/generated/animation/keyed_object_base.hpp
+++ b/include/rive/generated/animation/keyed_object_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_KEYED_OBJECT_BASE_HPP_
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class KeyedObjectBase : public Core {
+namespace rive
+{
+class KeyedObjectBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -12,10 +14,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case KeyedObjectBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case KeyedObjectBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -28,8 +34,10 @@
 
 public:
     inline uint32_t objectId() const { return m_ObjectId; }
-    void objectId(uint32_t value) {
-        if (m_ObjectId == value) {
+    void objectId(uint32_t value)
+    {
+        if (m_ObjectId == value)
+        {
             return;
         }
         m_ObjectId = value;
@@ -39,9 +47,13 @@
     Core* clone() const override;
     void copy(const KeyedObjectBase& object) { m_ObjectId = object.m_ObjectId; }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case objectIdPropertyKey: m_ObjectId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case objectIdPropertyKey:
+                m_ObjectId = CoreUintType::deserialize(reader);
+                return true;
         }
         return false;
     }
diff --git a/include/rive/generated/animation/keyed_property_base.hpp b/include/rive/generated/animation/keyed_property_base.hpp
index 7bac263..6a111eb 100644
--- a/include/rive/generated/animation/keyed_property_base.hpp
+++ b/include/rive/generated/animation/keyed_property_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_KEYED_PROPERTY_BASE_HPP_
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class KeyedPropertyBase : public Core {
+namespace rive
+{
+class KeyedPropertyBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -12,10 +14,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case KeyedPropertyBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case KeyedPropertyBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -28,8 +34,10 @@
 
 public:
     inline uint32_t propertyKey() const { return m_PropertyKey; }
-    void propertyKey(uint32_t value) {
-        if (m_PropertyKey == value) {
+    void propertyKey(uint32_t value)
+    {
+        if (m_PropertyKey == value)
+        {
             return;
         }
         m_PropertyKey = value;
@@ -39,8 +47,10 @@
     Core* clone() const override;
     void copy(const KeyedPropertyBase& object) { m_PropertyKey = object.m_PropertyKey; }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case propertyKeyPropertyKey:
                 m_PropertyKey = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/animation/keyframe_base.hpp b/include/rive/generated/animation/keyframe_base.hpp
index d70fa2b..7570d87 100644
--- a/include/rive/generated/animation/keyframe_base.hpp
+++ b/include/rive/generated/animation/keyframe_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_KEY_FRAME_BASE_HPP_
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class KeyFrameBase : public Core {
+namespace rive
+{
+class KeyFrameBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -12,10 +14,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case KeyFrameBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case KeyFrameBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -32,8 +38,10 @@
 
 public:
     inline uint32_t frame() const { return m_Frame; }
-    void frame(uint32_t value) {
-        if (m_Frame == value) {
+    void frame(uint32_t value)
+    {
+        if (m_Frame == value)
+        {
             return;
         }
         m_Frame = value;
@@ -41,8 +49,10 @@
     }
 
     inline uint32_t interpolationType() const { return m_InterpolationType; }
-    void interpolationType(uint32_t value) {
-        if (m_InterpolationType == value) {
+    void interpolationType(uint32_t value)
+    {
+        if (m_InterpolationType == value)
+        {
             return;
         }
         m_InterpolationType = value;
@@ -50,23 +60,30 @@
     }
 
     inline uint32_t interpolatorId() const { return m_InterpolatorId; }
-    void interpolatorId(uint32_t value) {
-        if (m_InterpolatorId == value) {
+    void interpolatorId(uint32_t value)
+    {
+        if (m_InterpolatorId == value)
+        {
             return;
         }
         m_InterpolatorId = value;
         interpolatorIdChanged();
     }
 
-    void copy(const KeyFrameBase& object) {
+    void copy(const KeyFrameBase& object)
+    {
         m_Frame = object.m_Frame;
         m_InterpolationType = object.m_InterpolationType;
         m_InterpolatorId = object.m_InterpolatorId;
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case framePropertyKey: m_Frame = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case framePropertyKey:
+                m_Frame = CoreUintType::deserialize(reader);
+                return true;
             case interpolationTypePropertyKey:
                 m_InterpolationType = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/animation/keyframe_bool_base.hpp b/include/rive/generated/animation/keyframe_bool_base.hpp
index 3194f87..c20a703 100644
--- a/include/rive/generated/animation/keyframe_bool_base.hpp
+++ b/include/rive/generated/animation/keyframe_bool_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_KEY_FRAME_BOOL_BASE_HPP_
 #include "rive/animation/keyframe.hpp"
 #include "rive/core/field_types/core_bool_type.hpp"
-namespace rive {
-class KeyFrameBoolBase : public KeyFrame {
+namespace rive
+{
+class KeyFrameBoolBase : public KeyFrame
+{
 protected:
     typedef KeyFrame Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case KeyFrameBoolBase::typeKey:
-            case KeyFrameBase::typeKey: return true;
-            default: return false;
+            case KeyFrameBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline bool value() const { return m_Value; }
-    void value(bool value) {
-        if (m_Value == value) {
+    void value(bool value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -38,14 +46,19 @@
     }
 
     Core* clone() const override;
-    void copy(const KeyFrameBoolBase& object) {
+    void copy(const KeyFrameBoolBase& object)
+    {
         m_Value = object.m_Value;
         KeyFrame::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreBoolType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreBoolType::deserialize(reader);
+                return true;
         }
         return KeyFrame::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/keyframe_color_base.hpp b/include/rive/generated/animation/keyframe_color_base.hpp
index 03d6d62..16d80fe 100644
--- a/include/rive/generated/animation/keyframe_color_base.hpp
+++ b/include/rive/generated/animation/keyframe_color_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_KEY_FRAME_COLOR_BASE_HPP_
 #include "rive/animation/keyframe.hpp"
 #include "rive/core/field_types/core_color_type.hpp"
-namespace rive {
-class KeyFrameColorBase : public KeyFrame {
+namespace rive
+{
+class KeyFrameColorBase : public KeyFrame
+{
 protected:
     typedef KeyFrame Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case KeyFrameColorBase::typeKey:
-            case KeyFrameBase::typeKey: return true;
-            default: return false;
+            case KeyFrameBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline int value() const { return m_Value; }
-    void value(int value) {
-        if (m_Value == value) {
+    void value(int value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -38,14 +46,19 @@
     }
 
     Core* clone() const override;
-    void copy(const KeyFrameColorBase& object) {
+    void copy(const KeyFrameColorBase& object)
+    {
         m_Value = object.m_Value;
         KeyFrame::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreColorType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreColorType::deserialize(reader);
+                return true;
         }
         return KeyFrame::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/keyframe_double_base.hpp b/include/rive/generated/animation/keyframe_double_base.hpp
index d1253c6..df52746 100644
--- a/include/rive/generated/animation/keyframe_double_base.hpp
+++ b/include/rive/generated/animation/keyframe_double_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_KEY_FRAME_DOUBLE_BASE_HPP_
 #include "rive/animation/keyframe.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class KeyFrameDoubleBase : public KeyFrame {
+namespace rive
+{
+class KeyFrameDoubleBase : public KeyFrame
+{
 protected:
     typedef KeyFrame Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case KeyFrameDoubleBase::typeKey:
-            case KeyFrameBase::typeKey: return true;
-            default: return false;
+            case KeyFrameBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline float value() const { return m_Value; }
-    void value(float value) {
-        if (m_Value == value) {
+    void value(float value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -38,14 +46,19 @@
     }
 
     Core* clone() const override;
-    void copy(const KeyFrameDoubleBase& object) {
+    void copy(const KeyFrameDoubleBase& object)
+    {
         m_Value = object.m_Value;
         KeyFrame::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return KeyFrame::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/keyframe_id_base.hpp b/include/rive/generated/animation/keyframe_id_base.hpp
index 76f8361..086f5c9 100644
--- a/include/rive/generated/animation/keyframe_id_base.hpp
+++ b/include/rive/generated/animation/keyframe_id_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_KEY_FRAME_ID_BASE_HPP_
 #include "rive/animation/keyframe.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class KeyFrameIdBase : public KeyFrame {
+namespace rive
+{
+class KeyFrameIdBase : public KeyFrame
+{
 protected:
     typedef KeyFrame Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case KeyFrameIdBase::typeKey:
-            case KeyFrameBase::typeKey: return true;
-            default: return false;
+            case KeyFrameBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline uint32_t value() const { return m_Value; }
-    void value(uint32_t value) {
-        if (m_Value == value) {
+    void value(uint32_t value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -38,14 +46,19 @@
     }
 
     Core* clone() const override;
-    void copy(const KeyFrameIdBase& object) {
+    void copy(const KeyFrameIdBase& object)
+    {
         m_Value = object.m_Value;
         KeyFrame::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreUintType::deserialize(reader);
+                return true;
         }
         return KeyFrame::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/layer_state_base.hpp b/include/rive/generated/animation/layer_state_base.hpp
index ae28eb2..a14df6c 100644
--- a/include/rive/generated/animation/layer_state_base.hpp
+++ b/include/rive/generated/animation/layer_state_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_LAYER_STATE_BASE_HPP_
 #define _RIVE_LAYER_STATE_BASE_HPP_
 #include "rive/animation/state_machine_layer_component.hpp"
-namespace rive {
-class LayerStateBase : public StateMachineLayerComponent {
+namespace rive
+{
+class LayerStateBase : public StateMachineLayerComponent
+{
 protected:
     typedef StateMachineLayerComponent Super;
 
@@ -11,11 +13,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case LayerStateBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/linear_animation_base.hpp b/include/rive/generated/animation/linear_animation_base.hpp
index 674d251..8ff3dcc 100644
--- a/include/rive/generated/animation/linear_animation_base.hpp
+++ b/include/rive/generated/animation/linear_animation_base.hpp
@@ -4,8 +4,10 @@
 #include "rive/core/field_types/core_bool_type.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class LinearAnimationBase : public Animation {
+namespace rive
+{
+class LinearAnimationBase : public Animation
+{
 protected:
     typedef Animation Super;
 
@@ -14,11 +16,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case LinearAnimationBase::typeKey:
-            case AnimationBase::typeKey: return true;
-            default: return false;
+            case AnimationBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -43,8 +49,10 @@
 
 public:
     inline uint32_t fps() const { return m_Fps; }
-    void fps(uint32_t value) {
-        if (m_Fps == value) {
+    void fps(uint32_t value)
+    {
+        if (m_Fps == value)
+        {
             return;
         }
         m_Fps = value;
@@ -52,8 +60,10 @@
     }
 
     inline uint32_t duration() const { return m_Duration; }
-    void duration(uint32_t value) {
-        if (m_Duration == value) {
+    void duration(uint32_t value)
+    {
+        if (m_Duration == value)
+        {
             return;
         }
         m_Duration = value;
@@ -61,8 +71,10 @@
     }
 
     inline float speed() const { return m_Speed; }
-    void speed(float value) {
-        if (m_Speed == value) {
+    void speed(float value)
+    {
+        if (m_Speed == value)
+        {
             return;
         }
         m_Speed = value;
@@ -70,8 +82,10 @@
     }
 
     inline uint32_t loopValue() const { return m_LoopValue; }
-    void loopValue(uint32_t value) {
-        if (m_LoopValue == value) {
+    void loopValue(uint32_t value)
+    {
+        if (m_LoopValue == value)
+        {
             return;
         }
         m_LoopValue = value;
@@ -79,8 +93,10 @@
     }
 
     inline uint32_t workStart() const { return m_WorkStart; }
-    void workStart(uint32_t value) {
-        if (m_WorkStart == value) {
+    void workStart(uint32_t value)
+    {
+        if (m_WorkStart == value)
+        {
             return;
         }
         m_WorkStart = value;
@@ -88,8 +104,10 @@
     }
 
     inline uint32_t workEnd() const { return m_WorkEnd; }
-    void workEnd(uint32_t value) {
-        if (m_WorkEnd == value) {
+    void workEnd(uint32_t value)
+    {
+        if (m_WorkEnd == value)
+        {
             return;
         }
         m_WorkEnd = value;
@@ -97,8 +115,10 @@
     }
 
     inline bool enableWorkArea() const { return m_EnableWorkArea; }
-    void enableWorkArea(bool value) {
-        if (m_EnableWorkArea == value) {
+    void enableWorkArea(bool value)
+    {
+        if (m_EnableWorkArea == value)
+        {
             return;
         }
         m_EnableWorkArea = value;
@@ -106,7 +126,8 @@
     }
 
     Core* clone() const override;
-    void copy(const LinearAnimationBase& object) {
+    void copy(const LinearAnimationBase& object)
+    {
         m_Fps = object.m_Fps;
         m_Duration = object.m_Duration;
         m_Speed = object.m_Speed;
@@ -117,14 +138,28 @@
         Animation::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case fpsPropertyKey: m_Fps = CoreUintType::deserialize(reader); return true;
-            case durationPropertyKey: m_Duration = CoreUintType::deserialize(reader); return true;
-            case speedPropertyKey: m_Speed = CoreDoubleType::deserialize(reader); return true;
-            case loopValuePropertyKey: m_LoopValue = CoreUintType::deserialize(reader); return true;
-            case workStartPropertyKey: m_WorkStart = CoreUintType::deserialize(reader); return true;
-            case workEndPropertyKey: m_WorkEnd = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case fpsPropertyKey:
+                m_Fps = CoreUintType::deserialize(reader);
+                return true;
+            case durationPropertyKey:
+                m_Duration = CoreUintType::deserialize(reader);
+                return true;
+            case speedPropertyKey:
+                m_Speed = CoreDoubleType::deserialize(reader);
+                return true;
+            case loopValuePropertyKey:
+                m_LoopValue = CoreUintType::deserialize(reader);
+                return true;
+            case workStartPropertyKey:
+                m_WorkStart = CoreUintType::deserialize(reader);
+                return true;
+            case workEndPropertyKey:
+                m_WorkEnd = CoreUintType::deserialize(reader);
+                return true;
             case enableWorkAreaPropertyKey:
                 m_EnableWorkArea = CoreBoolType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/animation/listener_action_base.hpp b/include/rive/generated/animation/listener_action_base.hpp
index c06aabb..d10a5f1 100644
--- a/include/rive/generated/animation/listener_action_base.hpp
+++ b/include/rive/generated/animation/listener_action_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_LISTENER_ACTION_BASE_HPP_
 #define _RIVE_LISTENER_ACTION_BASE_HPP_
 #include "rive/core.hpp"
-namespace rive {
-class ListenerActionBase : public Core {
+namespace rive
+{
+class ListenerActionBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -11,10 +13,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case ListenerActionBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case ListenerActionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/listener_align_target_base.hpp b/include/rive/generated/animation/listener_align_target_base.hpp
index bcdd2e5..79c0cfc 100644
--- a/include/rive/generated/animation/listener_align_target_base.hpp
+++ b/include/rive/generated/animation/listener_align_target_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_LISTENER_ALIGN_TARGET_BASE_HPP_
 #include "rive/animation/listener_action.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class ListenerAlignTargetBase : public ListenerAction {
+namespace rive
+{
+class ListenerAlignTargetBase : public ListenerAction
+{
 protected:
     typedef ListenerAction Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ListenerAlignTargetBase::typeKey:
-            case ListenerActionBase::typeKey: return true;
-            default: return false;
+            case ListenerActionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline uint32_t targetId() const { return m_TargetId; }
-    void targetId(uint32_t value) {
-        if (m_TargetId == value) {
+    void targetId(uint32_t value)
+    {
+        if (m_TargetId == value)
+        {
             return;
         }
         m_TargetId = value;
@@ -38,14 +46,19 @@
     }
 
     Core* clone() const override;
-    void copy(const ListenerAlignTargetBase& object) {
+    void copy(const ListenerAlignTargetBase& object)
+    {
         m_TargetId = object.m_TargetId;
         ListenerAction::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case targetIdPropertyKey: m_TargetId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case targetIdPropertyKey:
+                m_TargetId = CoreUintType::deserialize(reader);
+                return true;
         }
         return ListenerAction::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/listener_bool_change_base.hpp b/include/rive/generated/animation/listener_bool_change_base.hpp
index 9caad20..c7260b9 100644
--- a/include/rive/generated/animation/listener_bool_change_base.hpp
+++ b/include/rive/generated/animation/listener_bool_change_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_LISTENER_BOOL_CHANGE_BASE_HPP_
 #include "rive/animation/listener_input_change.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class ListenerBoolChangeBase : public ListenerInputChange {
+namespace rive
+{
+class ListenerBoolChangeBase : public ListenerInputChange
+{
 protected:
     typedef ListenerInputChange Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ListenerBoolChangeBase::typeKey:
             case ListenerInputChangeBase::typeKey:
-            case ListenerActionBase::typeKey: return true;
-            default: return false;
+            case ListenerActionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline uint32_t value() const { return m_Value; }
-    void value(uint32_t value) {
-        if (m_Value == value) {
+    void value(uint32_t value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -39,14 +47,19 @@
     }
 
     Core* clone() const override;
-    void copy(const ListenerBoolChangeBase& object) {
+    void copy(const ListenerBoolChangeBase& object)
+    {
         m_Value = object.m_Value;
         ListenerInputChange::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreUintType::deserialize(reader);
+                return true;
         }
         return ListenerInputChange::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/listener_input_change_base.hpp b/include/rive/generated/animation/listener_input_change_base.hpp
index 52cada6..f0c982a 100644
--- a/include/rive/generated/animation/listener_input_change_base.hpp
+++ b/include/rive/generated/animation/listener_input_change_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_LISTENER_INPUT_CHANGE_BASE_HPP_
 #include "rive/animation/listener_action.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class ListenerInputChangeBase : public ListenerAction {
+namespace rive
+{
+class ListenerInputChangeBase : public ListenerAction
+{
 protected:
     typedef ListenerAction Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ListenerInputChangeBase::typeKey:
-            case ListenerActionBase::typeKey: return true;
-            default: return false;
+            case ListenerActionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,22 +35,29 @@
 
 public:
     inline uint32_t inputId() const { return m_InputId; }
-    void inputId(uint32_t value) {
-        if (m_InputId == value) {
+    void inputId(uint32_t value)
+    {
+        if (m_InputId == value)
+        {
             return;
         }
         m_InputId = value;
         inputIdChanged();
     }
 
-    void copy(const ListenerInputChangeBase& object) {
+    void copy(const ListenerInputChangeBase& object)
+    {
         m_InputId = object.m_InputId;
         ListenerAction::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case inputIdPropertyKey: m_InputId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case inputIdPropertyKey:
+                m_InputId = CoreUintType::deserialize(reader);
+                return true;
         }
         return ListenerAction::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/listener_number_change_base.hpp b/include/rive/generated/animation/listener_number_change_base.hpp
index 0fecff4..b75949f 100644
--- a/include/rive/generated/animation/listener_number_change_base.hpp
+++ b/include/rive/generated/animation/listener_number_change_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_LISTENER_NUMBER_CHANGE_BASE_HPP_
 #include "rive/animation/listener_input_change.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class ListenerNumberChangeBase : public ListenerInputChange {
+namespace rive
+{
+class ListenerNumberChangeBase : public ListenerInputChange
+{
 protected:
     typedef ListenerInputChange Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ListenerNumberChangeBase::typeKey:
             case ListenerInputChangeBase::typeKey:
-            case ListenerActionBase::typeKey: return true;
-            default: return false;
+            case ListenerActionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline float value() const { return m_Value; }
-    void value(float value) {
-        if (m_Value == value) {
+    void value(float value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -39,14 +47,19 @@
     }
 
     Core* clone() const override;
-    void copy(const ListenerNumberChangeBase& object) {
+    void copy(const ListenerNumberChangeBase& object)
+    {
         m_Value = object.m_Value;
         ListenerInputChange::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return ListenerInputChange::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/listener_trigger_change_base.hpp b/include/rive/generated/animation/listener_trigger_change_base.hpp
index f4af15e..a8306db 100644
--- a/include/rive/generated/animation/listener_trigger_change_base.hpp
+++ b/include/rive/generated/animation/listener_trigger_change_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_LISTENER_TRIGGER_CHANGE_BASE_HPP_
 #define _RIVE_LISTENER_TRIGGER_CHANGE_BASE_HPP_
 #include "rive/animation/listener_input_change.hpp"
-namespace rive {
-class ListenerTriggerChangeBase : public ListenerInputChange {
+namespace rive
+{
+class ListenerTriggerChangeBase : public ListenerInputChange
+{
 protected:
     typedef ListenerInputChange Super;
 
@@ -11,12 +13,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ListenerTriggerChangeBase::typeKey:
             case ListenerInputChangeBase::typeKey:
-            case ListenerActionBase::typeKey: return true;
-            default: return false;
+            case ListenerActionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/nested_bool_base.hpp b/include/rive/generated/animation/nested_bool_base.hpp
index 6478300..d756d95 100644
--- a/include/rive/generated/animation/nested_bool_base.hpp
+++ b/include/rive/generated/animation/nested_bool_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_BOOL_BASE_HPP_
 #include "rive/animation/nested_input.hpp"
 #include "rive/core/field_types/core_bool_type.hpp"
-namespace rive {
-class NestedBoolBase : public NestedInput {
+namespace rive
+{
+class NestedBoolBase : public NestedInput
+{
 protected:
     typedef NestedInput Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedBoolBase::typeKey:
             case NestedInputBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline bool nestedValue() const { return m_NestedValue; }
-    void nestedValue(bool value) {
-        if (m_NestedValue == value) {
+    void nestedValue(bool value)
+    {
+        if (m_NestedValue == value)
+        {
             return;
         }
         m_NestedValue = value;
@@ -39,13 +47,16 @@
     }
 
     Core* clone() const override;
-    void copy(const NestedBoolBase& object) {
+    void copy(const NestedBoolBase& object)
+    {
         m_NestedValue = object.m_NestedValue;
         NestedInput::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case nestedValuePropertyKey:
                 m_NestedValue = CoreBoolType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/animation/nested_input_base.hpp b/include/rive/generated/animation/nested_input_base.hpp
index 54b2f73..40cab82 100644
--- a/include/rive/generated/animation/nested_input_base.hpp
+++ b/include/rive/generated/animation/nested_input_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_INPUT_BASE_HPP_
 #include "rive/component.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class NestedInputBase : public Component {
+namespace rive
+{
+class NestedInputBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedInputBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,22 +35,29 @@
 
 public:
     inline uint32_t inputId() const { return m_InputId; }
-    void inputId(uint32_t value) {
-        if (m_InputId == value) {
+    void inputId(uint32_t value)
+    {
+        if (m_InputId == value)
+        {
             return;
         }
         m_InputId = value;
         inputIdChanged();
     }
 
-    void copy(const NestedInputBase& object) {
+    void copy(const NestedInputBase& object)
+    {
         m_InputId = object.m_InputId;
         Component::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case inputIdPropertyKey: m_InputId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case inputIdPropertyKey:
+                m_InputId = CoreUintType::deserialize(reader);
+                return true;
         }
         return Component::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/nested_linear_animation_base.hpp b/include/rive/generated/animation/nested_linear_animation_base.hpp
index 540afad..e3875e4 100644
--- a/include/rive/generated/animation/nested_linear_animation_base.hpp
+++ b/include/rive/generated/animation/nested_linear_animation_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_LINEAR_ANIMATION_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/nested_animation.hpp"
-namespace rive {
-class NestedLinearAnimationBase : public NestedAnimation {
+namespace rive
+{
+class NestedLinearAnimationBase : public NestedAnimation
+{
 protected:
     typedef NestedAnimation Super;
 
@@ -12,13 +14,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedLinearAnimationBase::typeKey:
             case NestedAnimationBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -31,22 +37,29 @@
 
 public:
     inline float mix() const { return m_Mix; }
-    void mix(float value) {
-        if (m_Mix == value) {
+    void mix(float value)
+    {
+        if (m_Mix == value)
+        {
             return;
         }
         m_Mix = value;
         mixChanged();
     }
 
-    void copy(const NestedLinearAnimationBase& object) {
+    void copy(const NestedLinearAnimationBase& object)
+    {
         m_Mix = object.m_Mix;
         NestedAnimation::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case mixPropertyKey: m_Mix = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case mixPropertyKey:
+                m_Mix = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return NestedAnimation::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/nested_number_base.hpp b/include/rive/generated/animation/nested_number_base.hpp
index 051b375..e50ecac 100644
--- a/include/rive/generated/animation/nested_number_base.hpp
+++ b/include/rive/generated/animation/nested_number_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_NUMBER_BASE_HPP_
 #include "rive/animation/nested_input.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class NestedNumberBase : public NestedInput {
+namespace rive
+{
+class NestedNumberBase : public NestedInput
+{
 protected:
     typedef NestedInput Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedNumberBase::typeKey:
             case NestedInputBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline float nestedValue() const { return m_NestedValue; }
-    void nestedValue(float value) {
-        if (m_NestedValue == value) {
+    void nestedValue(float value)
+    {
+        if (m_NestedValue == value)
+        {
             return;
         }
         m_NestedValue = value;
@@ -39,13 +47,16 @@
     }
 
     Core* clone() const override;
-    void copy(const NestedNumberBase& object) {
+    void copy(const NestedNumberBase& object)
+    {
         m_NestedValue = object.m_NestedValue;
         NestedInput::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case nestedValuePropertyKey:
                 m_NestedValue = CoreDoubleType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/animation/nested_remap_animation_base.hpp b/include/rive/generated/animation/nested_remap_animation_base.hpp
index 06ce59e..5050aff 100644
--- a/include/rive/generated/animation/nested_remap_animation_base.hpp
+++ b/include/rive/generated/animation/nested_remap_animation_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_REMAP_ANIMATION_BASE_HPP_
 #include "rive/animation/nested_linear_animation.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class NestedRemapAnimationBase : public NestedLinearAnimation {
+namespace rive
+{
+class NestedRemapAnimationBase : public NestedLinearAnimation
+{
 protected:
     typedef NestedLinearAnimation Super;
 
@@ -12,14 +14,18 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedRemapAnimationBase::typeKey:
             case NestedLinearAnimationBase::typeKey:
             case NestedAnimationBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -32,8 +38,10 @@
 
 public:
     inline float time() const { return m_Time; }
-    void time(float value) {
-        if (m_Time == value) {
+    void time(float value)
+    {
+        if (m_Time == value)
+        {
             return;
         }
         m_Time = value;
@@ -41,14 +49,19 @@
     }
 
     Core* clone() const override;
-    void copy(const NestedRemapAnimationBase& object) {
+    void copy(const NestedRemapAnimationBase& object)
+    {
         m_Time = object.m_Time;
         NestedLinearAnimation::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case timePropertyKey: m_Time = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case timePropertyKey:
+                m_Time = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return NestedLinearAnimation::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/nested_simple_animation_base.hpp b/include/rive/generated/animation/nested_simple_animation_base.hpp
index b9896a2..e9306d9 100644
--- a/include/rive/generated/animation/nested_simple_animation_base.hpp
+++ b/include/rive/generated/animation/nested_simple_animation_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/animation/nested_linear_animation.hpp"
 #include "rive/core/field_types/core_bool_type.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class NestedSimpleAnimationBase : public NestedLinearAnimation {
+namespace rive
+{
+class NestedSimpleAnimationBase : public NestedLinearAnimation
+{
 protected:
     typedef NestedLinearAnimation Super;
 
@@ -13,14 +15,18 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedSimpleAnimationBase::typeKey:
             case NestedLinearAnimationBase::typeKey:
             case NestedAnimationBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -35,8 +41,10 @@
 
 public:
     inline float speed() const { return m_Speed; }
-    void speed(float value) {
-        if (m_Speed == value) {
+    void speed(float value)
+    {
+        if (m_Speed == value)
+        {
             return;
         }
         m_Speed = value;
@@ -44,8 +52,10 @@
     }
 
     inline bool isPlaying() const { return m_IsPlaying; }
-    void isPlaying(bool value) {
-        if (m_IsPlaying == value) {
+    void isPlaying(bool value)
+    {
+        if (m_IsPlaying == value)
+        {
             return;
         }
         m_IsPlaying = value;
@@ -53,16 +63,23 @@
     }
 
     Core* clone() const override;
-    void copy(const NestedSimpleAnimationBase& object) {
+    void copy(const NestedSimpleAnimationBase& object)
+    {
         m_Speed = object.m_Speed;
         m_IsPlaying = object.m_IsPlaying;
         NestedLinearAnimation::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case speedPropertyKey: m_Speed = CoreDoubleType::deserialize(reader); return true;
-            case isPlayingPropertyKey: m_IsPlaying = CoreBoolType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case speedPropertyKey:
+                m_Speed = CoreDoubleType::deserialize(reader);
+                return true;
+            case isPlayingPropertyKey:
+                m_IsPlaying = CoreBoolType::deserialize(reader);
+                return true;
         }
         return NestedLinearAnimation::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/nested_state_machine_base.hpp b/include/rive/generated/animation/nested_state_machine_base.hpp
index 5ab98fd..6a72d26 100644
--- a/include/rive/generated/animation/nested_state_machine_base.hpp
+++ b/include/rive/generated/animation/nested_state_machine_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_NESTED_STATE_MACHINE_BASE_HPP_
 #define _RIVE_NESTED_STATE_MACHINE_BASE_HPP_
 #include "rive/nested_animation.hpp"
-namespace rive {
-class NestedStateMachineBase : public NestedAnimation {
+namespace rive
+{
+class NestedStateMachineBase : public NestedAnimation
+{
 protected:
     typedef NestedAnimation Super;
 
@@ -11,13 +13,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedStateMachineBase::typeKey:
             case NestedAnimationBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/nested_trigger_base.hpp b/include/rive/generated/animation/nested_trigger_base.hpp
index 761573e..c489415 100644
--- a/include/rive/generated/animation/nested_trigger_base.hpp
+++ b/include/rive/generated/animation/nested_trigger_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_NESTED_TRIGGER_BASE_HPP_
 #define _RIVE_NESTED_TRIGGER_BASE_HPP_
 #include "rive/animation/nested_input.hpp"
-namespace rive {
-class NestedTriggerBase : public NestedInput {
+namespace rive
+{
+class NestedTriggerBase : public NestedInput
+{
 protected:
     typedef NestedInput Super;
 
@@ -11,12 +13,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedTriggerBase::typeKey:
             case NestedInputBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/state_machine_base.hpp b/include/rive/generated/animation/state_machine_base.hpp
index 49f67ac..8b72ddb 100644
--- a/include/rive/generated/animation/state_machine_base.hpp
+++ b/include/rive/generated/animation/state_machine_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_STATE_MACHINE_BASE_HPP_
 #define _RIVE_STATE_MACHINE_BASE_HPP_
 #include "rive/animation/animation.hpp"
-namespace rive {
-class StateMachineBase : public Animation {
+namespace rive
+{
+class StateMachineBase : public Animation
+{
 protected:
     typedef Animation Super;
 
@@ -11,11 +13,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StateMachineBase::typeKey:
-            case AnimationBase::typeKey: return true;
-            default: return false;
+            case AnimationBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/state_machine_bool_base.hpp b/include/rive/generated/animation/state_machine_bool_base.hpp
index a2655b5..2e08c1e 100644
--- a/include/rive/generated/animation/state_machine_bool_base.hpp
+++ b/include/rive/generated/animation/state_machine_bool_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_MACHINE_BOOL_BASE_HPP_
 #include "rive/animation/state_machine_input.hpp"
 #include "rive/core/field_types/core_bool_type.hpp"
-namespace rive {
-class StateMachineBoolBase : public StateMachineInput {
+namespace rive
+{
+class StateMachineBoolBase : public StateMachineInput
+{
 protected:
     typedef StateMachineInput Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StateMachineBoolBase::typeKey:
             case StateMachineInputBase::typeKey:
-            case StateMachineComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline bool value() const { return m_Value; }
-    void value(bool value) {
-        if (m_Value == value) {
+    void value(bool value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -39,14 +47,19 @@
     }
 
     Core* clone() const override;
-    void copy(const StateMachineBoolBase& object) {
+    void copy(const StateMachineBoolBase& object)
+    {
         m_Value = object.m_Value;
         StateMachineInput::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreBoolType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreBoolType::deserialize(reader);
+                return true;
         }
         return StateMachineInput::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/state_machine_component_base.hpp b/include/rive/generated/animation/state_machine_component_base.hpp
index b047698..eea14a5 100644
--- a/include/rive/generated/animation/state_machine_component_base.hpp
+++ b/include/rive/generated/animation/state_machine_component_base.hpp
@@ -3,8 +3,10 @@
 #include <string>
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_string_type.hpp"
-namespace rive {
-class StateMachineComponentBase : public Core {
+namespace rive
+{
+class StateMachineComponentBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -13,10 +15,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case StateMachineComponentBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case StateMachineComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline const std::string& name() const { return m_Name; }
-    void name(std::string value) {
-        if (m_Name == value) {
+    void name(std::string value)
+    {
+        if (m_Name == value)
+        {
             return;
         }
         m_Name = value;
@@ -39,9 +47,13 @@
 
     void copy(const StateMachineComponentBase& object) { m_Name = object.m_Name; }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case namePropertyKey: m_Name = CoreStringType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case namePropertyKey:
+                m_Name = CoreStringType::deserialize(reader);
+                return true;
         }
         return false;
     }
diff --git a/include/rive/generated/animation/state_machine_input_base.hpp b/include/rive/generated/animation/state_machine_input_base.hpp
index 44e93a9..c78f9f1 100644
--- a/include/rive/generated/animation/state_machine_input_base.hpp
+++ b/include/rive/generated/animation/state_machine_input_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_STATE_MACHINE_INPUT_BASE_HPP_
 #define _RIVE_STATE_MACHINE_INPUT_BASE_HPP_
 #include "rive/animation/state_machine_component.hpp"
-namespace rive {
-class StateMachineInputBase : public StateMachineComponent {
+namespace rive
+{
+class StateMachineInputBase : public StateMachineComponent
+{
 protected:
     typedef StateMachineComponent Super;
 
@@ -11,11 +13,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StateMachineInputBase::typeKey:
-            case StateMachineComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/state_machine_layer_base.hpp b/include/rive/generated/animation/state_machine_layer_base.hpp
index 85685b5..0545cd8 100644
--- a/include/rive/generated/animation/state_machine_layer_base.hpp
+++ b/include/rive/generated/animation/state_machine_layer_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_STATE_MACHINE_LAYER_BASE_HPP_
 #define _RIVE_STATE_MACHINE_LAYER_BASE_HPP_
 #include "rive/animation/state_machine_component.hpp"
-namespace rive {
-class StateMachineLayerBase : public StateMachineComponent {
+namespace rive
+{
+class StateMachineLayerBase : public StateMachineComponent
+{
 protected:
     typedef StateMachineComponent Super;
 
@@ -11,11 +13,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StateMachineLayerBase::typeKey:
-            case StateMachineComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/state_machine_layer_component_base.hpp b/include/rive/generated/animation/state_machine_layer_component_base.hpp
index 8915d7a..f99f201 100644
--- a/include/rive/generated/animation/state_machine_layer_component_base.hpp
+++ b/include/rive/generated/animation/state_machine_layer_component_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_STATE_MACHINE_LAYER_COMPONENT_BASE_HPP_
 #define _RIVE_STATE_MACHINE_LAYER_COMPONENT_BASE_HPP_
 #include "rive/core.hpp"
-namespace rive {
-class StateMachineLayerComponentBase : public Core {
+namespace rive
+{
+class StateMachineLayerComponentBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -11,10 +13,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/state_machine_listener_base.hpp b/include/rive/generated/animation/state_machine_listener_base.hpp
index 79ad675..d4373f4 100644
--- a/include/rive/generated/animation/state_machine_listener_base.hpp
+++ b/include/rive/generated/animation/state_machine_listener_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_MACHINE_LISTENER_BASE_HPP_
 #include "rive/animation/state_machine_component.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class StateMachineListenerBase : public StateMachineComponent {
+namespace rive
+{
+class StateMachineListenerBase : public StateMachineComponent
+{
 protected:
     typedef StateMachineComponent Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StateMachineListenerBase::typeKey:
-            case StateMachineComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -31,8 +37,10 @@
 
 public:
     inline uint32_t targetId() const { return m_TargetId; }
-    void targetId(uint32_t value) {
-        if (m_TargetId == value) {
+    void targetId(uint32_t value)
+    {
+        if (m_TargetId == value)
+        {
             return;
         }
         m_TargetId = value;
@@ -40,8 +48,10 @@
     }
 
     inline uint32_t listenerTypeValue() const { return m_ListenerTypeValue; }
-    void listenerTypeValue(uint32_t value) {
-        if (m_ListenerTypeValue == value) {
+    void listenerTypeValue(uint32_t value)
+    {
+        if (m_ListenerTypeValue == value)
+        {
             return;
         }
         m_ListenerTypeValue = value;
@@ -49,15 +59,20 @@
     }
 
     Core* clone() const override;
-    void copy(const StateMachineListenerBase& object) {
+    void copy(const StateMachineListenerBase& object)
+    {
         m_TargetId = object.m_TargetId;
         m_ListenerTypeValue = object.m_ListenerTypeValue;
         StateMachineComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case targetIdPropertyKey: m_TargetId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case targetIdPropertyKey:
+                m_TargetId = CoreUintType::deserialize(reader);
+                return true;
             case listenerTypeValuePropertyKey:
                 m_ListenerTypeValue = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/animation/state_machine_number_base.hpp b/include/rive/generated/animation/state_machine_number_base.hpp
index 46e1cd6..73d605f 100644
--- a/include/rive/generated/animation/state_machine_number_base.hpp
+++ b/include/rive/generated/animation/state_machine_number_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_MACHINE_NUMBER_BASE_HPP_
 #include "rive/animation/state_machine_input.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class StateMachineNumberBase : public StateMachineInput {
+namespace rive
+{
+class StateMachineNumberBase : public StateMachineInput
+{
 protected:
     typedef StateMachineInput Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StateMachineNumberBase::typeKey:
             case StateMachineInputBase::typeKey:
-            case StateMachineComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline float value() const { return m_Value; }
-    void value(float value) {
-        if (m_Value == value) {
+    void value(float value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -39,14 +47,19 @@
     }
 
     Core* clone() const override;
-    void copy(const StateMachineNumberBase& object) {
+    void copy(const StateMachineNumberBase& object)
+    {
         m_Value = object.m_Value;
         StateMachineInput::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return StateMachineInput::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/state_machine_trigger_base.hpp b/include/rive/generated/animation/state_machine_trigger_base.hpp
index 5c34eb5..871d10e 100644
--- a/include/rive/generated/animation/state_machine_trigger_base.hpp
+++ b/include/rive/generated/animation/state_machine_trigger_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_STATE_MACHINE_TRIGGER_BASE_HPP_
 #define _RIVE_STATE_MACHINE_TRIGGER_BASE_HPP_
 #include "rive/animation/state_machine_input.hpp"
-namespace rive {
-class StateMachineTriggerBase : public StateMachineInput {
+namespace rive
+{
+class StateMachineTriggerBase : public StateMachineInput
+{
 protected:
     typedef StateMachineInput Super;
 
@@ -11,12 +13,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StateMachineTriggerBase::typeKey:
             case StateMachineInputBase::typeKey:
-            case StateMachineComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/state_transition_base.hpp b/include/rive/generated/animation/state_transition_base.hpp
index d822d2c..d50874a 100644
--- a/include/rive/generated/animation/state_transition_base.hpp
+++ b/include/rive/generated/animation/state_transition_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STATE_TRANSITION_BASE_HPP_
 #include "rive/animation/state_machine_layer_component.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class StateTransitionBase : public StateMachineLayerComponent {
+namespace rive
+{
+class StateTransitionBase : public StateMachineLayerComponent
+{
 protected:
     typedef StateMachineLayerComponent Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StateTransitionBase::typeKey:
-            case StateMachineLayerComponentBase::typeKey: return true;
-            default: return false;
+            case StateMachineLayerComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -35,8 +41,10 @@
 
 public:
     inline uint32_t stateToId() const { return m_StateToId; }
-    void stateToId(uint32_t value) {
-        if (m_StateToId == value) {
+    void stateToId(uint32_t value)
+    {
+        if (m_StateToId == value)
+        {
             return;
         }
         m_StateToId = value;
@@ -44,8 +52,10 @@
     }
 
     inline uint32_t flags() const { return m_Flags; }
-    void flags(uint32_t value) {
-        if (m_Flags == value) {
+    void flags(uint32_t value)
+    {
+        if (m_Flags == value)
+        {
             return;
         }
         m_Flags = value;
@@ -53,8 +63,10 @@
     }
 
     inline uint32_t duration() const { return m_Duration; }
-    void duration(uint32_t value) {
-        if (m_Duration == value) {
+    void duration(uint32_t value)
+    {
+        if (m_Duration == value)
+        {
             return;
         }
         m_Duration = value;
@@ -62,8 +74,10 @@
     }
 
     inline uint32_t exitTime() const { return m_ExitTime; }
-    void exitTime(uint32_t value) {
-        if (m_ExitTime == value) {
+    void exitTime(uint32_t value)
+    {
+        if (m_ExitTime == value)
+        {
             return;
         }
         m_ExitTime = value;
@@ -71,7 +85,8 @@
     }
 
     Core* clone() const override;
-    void copy(const StateTransitionBase& object) {
+    void copy(const StateTransitionBase& object)
+    {
         m_StateToId = object.m_StateToId;
         m_Flags = object.m_Flags;
         m_Duration = object.m_Duration;
@@ -79,12 +94,22 @@
         StateMachineLayerComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case stateToIdPropertyKey: m_StateToId = CoreUintType::deserialize(reader); return true;
-            case flagsPropertyKey: m_Flags = CoreUintType::deserialize(reader); return true;
-            case durationPropertyKey: m_Duration = CoreUintType::deserialize(reader); return true;
-            case exitTimePropertyKey: m_ExitTime = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case stateToIdPropertyKey:
+                m_StateToId = CoreUintType::deserialize(reader);
+                return true;
+            case flagsPropertyKey:
+                m_Flags = CoreUintType::deserialize(reader);
+                return true;
+            case durationPropertyKey:
+                m_Duration = CoreUintType::deserialize(reader);
+                return true;
+            case exitTimePropertyKey:
+                m_ExitTime = CoreUintType::deserialize(reader);
+                return true;
         }
         return StateMachineLayerComponent::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/transition_bool_condition_base.hpp b/include/rive/generated/animation/transition_bool_condition_base.hpp
index 63447ca..8567f37 100644
--- a/include/rive/generated/animation/transition_bool_condition_base.hpp
+++ b/include/rive/generated/animation/transition_bool_condition_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_TRANSITION_BOOL_CONDITION_BASE_HPP_
 #define _RIVE_TRANSITION_BOOL_CONDITION_BASE_HPP_
 #include "rive/animation/transition_value_condition.hpp"
-namespace rive {
-class TransitionBoolConditionBase : public TransitionValueCondition {
+namespace rive
+{
+class TransitionBoolConditionBase : public TransitionValueCondition
+{
 protected:
     typedef TransitionValueCondition Super;
 
@@ -11,12 +13,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TransitionBoolConditionBase::typeKey:
             case TransitionValueConditionBase::typeKey:
-            case TransitionConditionBase::typeKey: return true;
-            default: return false;
+            case TransitionConditionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/transition_condition_base.hpp b/include/rive/generated/animation/transition_condition_base.hpp
index 220e633..e0ec5da 100644
--- a/include/rive/generated/animation/transition_condition_base.hpp
+++ b/include/rive/generated/animation/transition_condition_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSITION_CONDITION_BASE_HPP_
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class TransitionConditionBase : public Core {
+namespace rive
+{
+class TransitionConditionBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -12,10 +14,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case TransitionConditionBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case TransitionConditionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -28,8 +34,10 @@
 
 public:
     inline uint32_t inputId() const { return m_InputId; }
-    void inputId(uint32_t value) {
-        if (m_InputId == value) {
+    void inputId(uint32_t value)
+    {
+        if (m_InputId == value)
+        {
             return;
         }
         m_InputId = value;
@@ -38,9 +46,13 @@
 
     void copy(const TransitionConditionBase& object) { m_InputId = object.m_InputId; }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case inputIdPropertyKey: m_InputId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case inputIdPropertyKey:
+                m_InputId = CoreUintType::deserialize(reader);
+                return true;
         }
         return false;
     }
diff --git a/include/rive/generated/animation/transition_number_condition_base.hpp b/include/rive/generated/animation/transition_number_condition_base.hpp
index d068e80..5d4cc79 100644
--- a/include/rive/generated/animation/transition_number_condition_base.hpp
+++ b/include/rive/generated/animation/transition_number_condition_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSITION_NUMBER_CONDITION_BASE_HPP_
 #include "rive/animation/transition_value_condition.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class TransitionNumberConditionBase : public TransitionValueCondition {
+namespace rive
+{
+class TransitionNumberConditionBase : public TransitionValueCondition
+{
 protected:
     typedef TransitionValueCondition Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TransitionNumberConditionBase::typeKey:
             case TransitionValueConditionBase::typeKey:
-            case TransitionConditionBase::typeKey: return true;
-            default: return false;
+            case TransitionConditionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline float value() const { return m_Value; }
-    void value(float value) {
-        if (m_Value == value) {
+    void value(float value)
+    {
+        if (m_Value == value)
+        {
             return;
         }
         m_Value = value;
@@ -39,14 +47,19 @@
     }
 
     Core* clone() const override;
-    void copy(const TransitionNumberConditionBase& object) {
+    void copy(const TransitionNumberConditionBase& object)
+    {
         m_Value = object.m_Value;
         TransitionValueCondition::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuePropertyKey: m_Value = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuePropertyKey:
+                m_Value = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return TransitionValueCondition::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/animation/transition_trigger_condition_base.hpp b/include/rive/generated/animation/transition_trigger_condition_base.hpp
index 13a58b3..b10c559 100644
--- a/include/rive/generated/animation/transition_trigger_condition_base.hpp
+++ b/include/rive/generated/animation/transition_trigger_condition_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_TRANSITION_TRIGGER_CONDITION_BASE_HPP_
 #define _RIVE_TRANSITION_TRIGGER_CONDITION_BASE_HPP_
 #include "rive/animation/transition_condition.hpp"
-namespace rive {
-class TransitionTriggerConditionBase : public TransitionCondition {
+namespace rive
+{
+class TransitionTriggerConditionBase : public TransitionCondition
+{
 protected:
     typedef TransitionCondition Super;
 
@@ -11,11 +13,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TransitionTriggerConditionBase::typeKey:
-            case TransitionConditionBase::typeKey: return true;
-            default: return false;
+            case TransitionConditionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/animation/transition_value_condition_base.hpp b/include/rive/generated/animation/transition_value_condition_base.hpp
index 91b4075..9fe2c46 100644
--- a/include/rive/generated/animation/transition_value_condition_base.hpp
+++ b/include/rive/generated/animation/transition_value_condition_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSITION_VALUE_CONDITION_BASE_HPP_
 #include "rive/animation/transition_condition.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class TransitionValueConditionBase : public TransitionCondition {
+namespace rive
+{
+class TransitionValueConditionBase : public TransitionCondition
+{
 protected:
     typedef TransitionCondition Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TransitionValueConditionBase::typeKey:
-            case TransitionConditionBase::typeKey: return true;
-            default: return false;
+            case TransitionConditionBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,22 +35,29 @@
 
 public:
     inline uint32_t opValue() const { return m_OpValue; }
-    void opValue(uint32_t value) {
-        if (m_OpValue == value) {
+    void opValue(uint32_t value)
+    {
+        if (m_OpValue == value)
+        {
             return;
         }
         m_OpValue = value;
         opValueChanged();
     }
 
-    void copy(const TransitionValueConditionBase& object) {
+    void copy(const TransitionValueConditionBase& object)
+    {
         m_OpValue = object.m_OpValue;
         TransitionCondition::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case opValuePropertyKey: m_OpValue = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case opValuePropertyKey:
+                m_OpValue = CoreUintType::deserialize(reader);
+                return true;
         }
         return TransitionCondition::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/artboard_base.hpp b/include/rive/generated/artboard_base.hpp
index e3c4c5a..feac51f 100644
--- a/include/rive/generated/artboard_base.hpp
+++ b/include/rive/generated/artboard_base.hpp
@@ -4,8 +4,10 @@
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
 #include "rive/world_transform_component.hpp"
-namespace rive {
-class ArtboardBase : public WorldTransformComponent {
+namespace rive
+{
+class ArtboardBase : public WorldTransformComponent
+{
 protected:
     typedef WorldTransformComponent Super;
 
@@ -14,13 +16,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ArtboardBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -47,8 +53,10 @@
 
 public:
     inline bool clip() const { return m_Clip; }
-    void clip(bool value) {
-        if (m_Clip == value) {
+    void clip(bool value)
+    {
+        if (m_Clip == value)
+        {
             return;
         }
         m_Clip = value;
@@ -56,8 +64,10 @@
     }
 
     inline float width() const { return m_Width; }
-    void width(float value) {
-        if (m_Width == value) {
+    void width(float value)
+    {
+        if (m_Width == value)
+        {
             return;
         }
         m_Width = value;
@@ -65,8 +75,10 @@
     }
 
     inline float height() const { return m_Height; }
-    void height(float value) {
-        if (m_Height == value) {
+    void height(float value)
+    {
+        if (m_Height == value)
+        {
             return;
         }
         m_Height = value;
@@ -74,8 +86,10 @@
     }
 
     inline float x() const { return m_X; }
-    void x(float value) {
-        if (m_X == value) {
+    void x(float value)
+    {
+        if (m_X == value)
+        {
             return;
         }
         m_X = value;
@@ -83,8 +97,10 @@
     }
 
     inline float y() const { return m_Y; }
-    void y(float value) {
-        if (m_Y == value) {
+    void y(float value)
+    {
+        if (m_Y == value)
+        {
             return;
         }
         m_Y = value;
@@ -92,8 +108,10 @@
     }
 
     inline float originX() const { return m_OriginX; }
-    void originX(float value) {
-        if (m_OriginX == value) {
+    void originX(float value)
+    {
+        if (m_OriginX == value)
+        {
             return;
         }
         m_OriginX = value;
@@ -101,8 +119,10 @@
     }
 
     inline float originY() const { return m_OriginY; }
-    void originY(float value) {
-        if (m_OriginY == value) {
+    void originY(float value)
+    {
+        if (m_OriginY == value)
+        {
             return;
         }
         m_OriginY = value;
@@ -110,8 +130,10 @@
     }
 
     inline uint32_t defaultStateMachineId() const { return m_DefaultStateMachineId; }
-    void defaultStateMachineId(uint32_t value) {
-        if (m_DefaultStateMachineId == value) {
+    void defaultStateMachineId(uint32_t value)
+    {
+        if (m_DefaultStateMachineId == value)
+        {
             return;
         }
         m_DefaultStateMachineId = value;
@@ -119,7 +141,8 @@
     }
 
     Core* clone() const override;
-    void copy(const ArtboardBase& object) {
+    void copy(const ArtboardBase& object)
+    {
         m_Clip = object.m_Clip;
         m_Width = object.m_Width;
         m_Height = object.m_Height;
@@ -131,15 +154,31 @@
         WorldTransformComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case clipPropertyKey: m_Clip = CoreBoolType::deserialize(reader); return true;
-            case widthPropertyKey: m_Width = CoreDoubleType::deserialize(reader); return true;
-            case heightPropertyKey: m_Height = CoreDoubleType::deserialize(reader); return true;
-            case xPropertyKey: m_X = CoreDoubleType::deserialize(reader); return true;
-            case yPropertyKey: m_Y = CoreDoubleType::deserialize(reader); return true;
-            case originXPropertyKey: m_OriginX = CoreDoubleType::deserialize(reader); return true;
-            case originYPropertyKey: m_OriginY = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case clipPropertyKey:
+                m_Clip = CoreBoolType::deserialize(reader);
+                return true;
+            case widthPropertyKey:
+                m_Width = CoreDoubleType::deserialize(reader);
+                return true;
+            case heightPropertyKey:
+                m_Height = CoreDoubleType::deserialize(reader);
+                return true;
+            case xPropertyKey:
+                m_X = CoreDoubleType::deserialize(reader);
+                return true;
+            case yPropertyKey:
+                m_Y = CoreDoubleType::deserialize(reader);
+                return true;
+            case originXPropertyKey:
+                m_OriginX = CoreDoubleType::deserialize(reader);
+                return true;
+            case originYPropertyKey:
+                m_OriginY = CoreDoubleType::deserialize(reader);
+                return true;
             case defaultStateMachineIdPropertyKey:
                 m_DefaultStateMachineId = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/assets/asset_base.hpp b/include/rive/generated/assets/asset_base.hpp
index 4917059..794b563 100644
--- a/include/rive/generated/assets/asset_base.hpp
+++ b/include/rive/generated/assets/asset_base.hpp
@@ -3,8 +3,10 @@
 #include <string>
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_string_type.hpp"
-namespace rive {
-class AssetBase : public Core {
+namespace rive
+{
+class AssetBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -13,10 +15,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case AssetBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case AssetBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline const std::string& name() const { return m_Name; }
-    void name(std::string value) {
-        if (m_Name == value) {
+    void name(std::string value)
+    {
+        if (m_Name == value)
+        {
             return;
         }
         m_Name = value;
@@ -39,9 +47,13 @@
 
     void copy(const AssetBase& object) { m_Name = object.m_Name; }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case namePropertyKey: m_Name = CoreStringType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case namePropertyKey:
+                m_Name = CoreStringType::deserialize(reader);
+                return true;
         }
         return false;
     }
diff --git a/include/rive/generated/assets/drawable_asset_base.hpp b/include/rive/generated/assets/drawable_asset_base.hpp
index 8723e75..22690ed 100644
--- a/include/rive/generated/assets/drawable_asset_base.hpp
+++ b/include/rive/generated/assets/drawable_asset_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_DRAWABLE_ASSET_BASE_HPP_
 #include "rive/assets/file_asset.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class DrawableAssetBase : public FileAsset {
+namespace rive
+{
+class DrawableAssetBase : public FileAsset
+{
 protected:
     typedef FileAsset Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case DrawableAssetBase::typeKey:
             case FileAssetBase::typeKey:
-            case AssetBase::typeKey: return true;
-            default: return false;
+            case AssetBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -32,8 +38,10 @@
 
 public:
     inline float height() const { return m_Height; }
-    void height(float value) {
-        if (m_Height == value) {
+    void height(float value)
+    {
+        if (m_Height == value)
+        {
             return;
         }
         m_Height = value;
@@ -41,24 +49,33 @@
     }
 
     inline float width() const { return m_Width; }
-    void width(float value) {
-        if (m_Width == value) {
+    void width(float value)
+    {
+        if (m_Width == value)
+        {
             return;
         }
         m_Width = value;
         widthChanged();
     }
 
-    void copy(const DrawableAssetBase& object) {
+    void copy(const DrawableAssetBase& object)
+    {
         m_Height = object.m_Height;
         m_Width = object.m_Width;
         FileAsset::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case heightPropertyKey: m_Height = CoreDoubleType::deserialize(reader); return true;
-            case widthPropertyKey: m_Width = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case heightPropertyKey:
+                m_Height = CoreDoubleType::deserialize(reader);
+                return true;
+            case widthPropertyKey:
+                m_Width = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return FileAsset::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/assets/file_asset_base.hpp b/include/rive/generated/assets/file_asset_base.hpp
index 2fffb29..4856c62 100644
--- a/include/rive/generated/assets/file_asset_base.hpp
+++ b/include/rive/generated/assets/file_asset_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_FILE_ASSET_BASE_HPP_
 #include "rive/assets/asset.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class FileAssetBase : public Asset {
+namespace rive
+{
+class FileAssetBase : public Asset
+{
 protected:
     typedef Asset Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case FileAssetBase::typeKey:
-            case AssetBase::typeKey: return true;
-            default: return false;
+            case AssetBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,22 +35,29 @@
 
 public:
     inline uint32_t assetId() const { return m_AssetId; }
-    void assetId(uint32_t value) {
-        if (m_AssetId == value) {
+    void assetId(uint32_t value)
+    {
+        if (m_AssetId == value)
+        {
             return;
         }
         m_AssetId = value;
         assetIdChanged();
     }
 
-    void copy(const FileAssetBase& object) {
+    void copy(const FileAssetBase& object)
+    {
         m_AssetId = object.m_AssetId;
         Asset::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case assetIdPropertyKey: m_AssetId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case assetIdPropertyKey:
+                m_AssetId = CoreUintType::deserialize(reader);
+                return true;
         }
         return Asset::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/assets/file_asset_contents_base.hpp b/include/rive/generated/assets/file_asset_contents_base.hpp
index 0bc552e..dd50e07 100644
--- a/include/rive/generated/assets/file_asset_contents_base.hpp
+++ b/include/rive/generated/assets/file_asset_contents_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_bytes_type.hpp"
 #include "rive/span.hpp"
-namespace rive {
-class FileAssetContentsBase : public Core {
+namespace rive
+{
+class FileAssetContentsBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -13,10 +15,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case FileAssetContentsBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case FileAssetContentsBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -31,9 +37,13 @@
     Core* clone() const override;
     void copy(const FileAssetContentsBase& object) { copyBytes(object); }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case bytesPropertyKey: decodeBytes(CoreBytesType::deserialize(reader)); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case bytesPropertyKey:
+                decodeBytes(CoreBytesType::deserialize(reader));
+                return true;
         }
         return false;
     }
diff --git a/include/rive/generated/assets/folder_base.hpp b/include/rive/generated/assets/folder_base.hpp
index afd7e8a..77f9750 100644
--- a/include/rive/generated/assets/folder_base.hpp
+++ b/include/rive/generated/assets/folder_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_FOLDER_BASE_HPP_
 #define _RIVE_FOLDER_BASE_HPP_
 #include "rive/assets/asset.hpp"
-namespace rive {
-class FolderBase : public Asset {
+namespace rive
+{
+class FolderBase : public Asset
+{
 protected:
     typedef Asset Super;
 
@@ -11,11 +13,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case FolderBase::typeKey:
-            case AssetBase::typeKey: return true;
-            default: return false;
+            case AssetBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/assets/image_asset_base.hpp b/include/rive/generated/assets/image_asset_base.hpp
index 091b9d9..d51220f 100644
--- a/include/rive/generated/assets/image_asset_base.hpp
+++ b/include/rive/generated/assets/image_asset_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_IMAGE_ASSET_BASE_HPP_
 #define _RIVE_IMAGE_ASSET_BASE_HPP_
 #include "rive/assets/drawable_asset.hpp"
-namespace rive {
-class ImageAssetBase : public DrawableAsset {
+namespace rive
+{
+class ImageAssetBase : public DrawableAsset
+{
 protected:
     typedef DrawableAsset Super;
 
@@ -11,13 +13,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ImageAssetBase::typeKey:
             case DrawableAssetBase::typeKey:
             case FileAssetBase::typeKey:
-            case AssetBase::typeKey: return true;
-            default: return false;
+            case AssetBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/backboard_base.hpp b/include/rive/generated/backboard_base.hpp
index d0f2294..9f0cf19 100644
--- a/include/rive/generated/backboard_base.hpp
+++ b/include/rive/generated/backboard_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_BACKBOARD_BASE_HPP_
 #define _RIVE_BACKBOARD_BASE_HPP_
 #include "rive/core.hpp"
-namespace rive {
-class BackboardBase : public Core {
+namespace rive
+{
+class BackboardBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -11,10 +13,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case BackboardBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case BackboardBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/bones/bone_base.hpp b/include/rive/generated/bones/bone_base.hpp
index ae8d2bb..a6d2a01 100644
--- a/include/rive/generated/bones/bone_base.hpp
+++ b/include/rive/generated/bones/bone_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_BONE_BASE_HPP_
 #include "rive/bones/skeletal_component.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class BoneBase : public SkeletalComponent {
+namespace rive
+{
+class BoneBase : public SkeletalComponent
+{
 protected:
     typedef SkeletalComponent Super;
 
@@ -12,15 +14,19 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case BoneBase::typeKey:
             case SkeletalComponentBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -33,8 +39,10 @@
 
 public:
     inline float length() const { return m_Length; }
-    void length(float value) {
-        if (m_Length == value) {
+    void length(float value)
+    {
+        if (m_Length == value)
+        {
             return;
         }
         m_Length = value;
@@ -42,14 +50,19 @@
     }
 
     Core* clone() const override;
-    void copy(const BoneBase& object) {
+    void copy(const BoneBase& object)
+    {
         m_Length = object.m_Length;
         SkeletalComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case lengthPropertyKey: m_Length = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case lengthPropertyKey:
+                m_Length = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return SkeletalComponent::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/bones/cubic_weight_base.hpp b/include/rive/generated/bones/cubic_weight_base.hpp
index 85ec61e..13d016e 100644
--- a/include/rive/generated/bones/cubic_weight_base.hpp
+++ b/include/rive/generated/bones/cubic_weight_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_CUBIC_WEIGHT_BASE_HPP_
 #include "rive/bones/weight.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class CubicWeightBase : public Weight {
+namespace rive
+{
+class CubicWeightBase : public Weight
+{
 protected:
     typedef Weight Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case CubicWeightBase::typeKey:
             case WeightBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -36,8 +42,10 @@
 
 public:
     inline uint32_t inValues() const { return m_InValues; }
-    void inValues(uint32_t value) {
-        if (m_InValues == value) {
+    void inValues(uint32_t value)
+    {
+        if (m_InValues == value)
+        {
             return;
         }
         m_InValues = value;
@@ -45,8 +53,10 @@
     }
 
     inline uint32_t inIndices() const { return m_InIndices; }
-    void inIndices(uint32_t value) {
-        if (m_InIndices == value) {
+    void inIndices(uint32_t value)
+    {
+        if (m_InIndices == value)
+        {
             return;
         }
         m_InIndices = value;
@@ -54,8 +64,10 @@
     }
 
     inline uint32_t outValues() const { return m_OutValues; }
-    void outValues(uint32_t value) {
-        if (m_OutValues == value) {
+    void outValues(uint32_t value)
+    {
+        if (m_OutValues == value)
+        {
             return;
         }
         m_OutValues = value;
@@ -63,8 +75,10 @@
     }
 
     inline uint32_t outIndices() const { return m_OutIndices; }
-    void outIndices(uint32_t value) {
-        if (m_OutIndices == value) {
+    void outIndices(uint32_t value)
+    {
+        if (m_OutIndices == value)
+        {
             return;
         }
         m_OutIndices = value;
@@ -72,7 +86,8 @@
     }
 
     Core* clone() const override;
-    void copy(const CubicWeightBase& object) {
+    void copy(const CubicWeightBase& object)
+    {
         m_InValues = object.m_InValues;
         m_InIndices = object.m_InIndices;
         m_OutValues = object.m_OutValues;
@@ -80,11 +95,19 @@
         Weight::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case inValuesPropertyKey: m_InValues = CoreUintType::deserialize(reader); return true;
-            case inIndicesPropertyKey: m_InIndices = CoreUintType::deserialize(reader); return true;
-            case outValuesPropertyKey: m_OutValues = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case inValuesPropertyKey:
+                m_InValues = CoreUintType::deserialize(reader);
+                return true;
+            case inIndicesPropertyKey:
+                m_InIndices = CoreUintType::deserialize(reader);
+                return true;
+            case outValuesPropertyKey:
+                m_OutValues = CoreUintType::deserialize(reader);
+                return true;
             case outIndicesPropertyKey:
                 m_OutIndices = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/bones/root_bone_base.hpp b/include/rive/generated/bones/root_bone_base.hpp
index 552443f..6612a1d 100644
--- a/include/rive/generated/bones/root_bone_base.hpp
+++ b/include/rive/generated/bones/root_bone_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_ROOT_BONE_BASE_HPP_
 #include "rive/bones/bone.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class RootBoneBase : public Bone {
+namespace rive
+{
+class RootBoneBase : public Bone
+{
 protected:
     typedef Bone Super;
 
@@ -12,16 +14,20 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case RootBoneBase::typeKey:
             case BoneBase::typeKey:
             case SkeletalComponentBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -36,8 +42,10 @@
 
 public:
     inline float x() const override { return m_X; }
-    void x(float value) {
-        if (m_X == value) {
+    void x(float value)
+    {
+        if (m_X == value)
+        {
             return;
         }
         m_X = value;
@@ -45,8 +53,10 @@
     }
 
     inline float y() const override { return m_Y; }
-    void y(float value) {
-        if (m_Y == value) {
+    void y(float value)
+    {
+        if (m_Y == value)
+        {
             return;
         }
         m_Y = value;
@@ -54,16 +64,23 @@
     }
 
     Core* clone() const override;
-    void copy(const RootBoneBase& object) {
+    void copy(const RootBoneBase& object)
+    {
         m_X = object.m_X;
         m_Y = object.m_Y;
         Bone::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case xPropertyKey: m_X = CoreDoubleType::deserialize(reader); return true;
-            case yPropertyKey: m_Y = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case xPropertyKey:
+                m_X = CoreDoubleType::deserialize(reader);
+                return true;
+            case yPropertyKey:
+                m_Y = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return Bone::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/bones/skeletal_component_base.hpp b/include/rive/generated/bones/skeletal_component_base.hpp
index e461fe6..46bd185 100644
--- a/include/rive/generated/bones/skeletal_component_base.hpp
+++ b/include/rive/generated/bones/skeletal_component_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_SKELETAL_COMPONENT_BASE_HPP_
 #define _RIVE_SKELETAL_COMPONENT_BASE_HPP_
 #include "rive/transform_component.hpp"
-namespace rive {
-class SkeletalComponentBase : public TransformComponent {
+namespace rive
+{
+class SkeletalComponentBase : public TransformComponent
+{
 protected:
     typedef TransformComponent Super;
 
@@ -11,14 +13,18 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case SkeletalComponentBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/bones/skin_base.hpp b/include/rive/generated/bones/skin_base.hpp
index 7a52c9c..2cbe0ce 100644
--- a/include/rive/generated/bones/skin_base.hpp
+++ b/include/rive/generated/bones/skin_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_SKIN_BASE_HPP_
 #include "rive/container_component.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class SkinBase : public ContainerComponent {
+namespace rive
+{
+class SkinBase : public ContainerComponent
+{
 protected:
     typedef ContainerComponent Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case SkinBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -40,8 +46,10 @@
 
 public:
     inline float xx() const { return m_Xx; }
-    void xx(float value) {
-        if (m_Xx == value) {
+    void xx(float value)
+    {
+        if (m_Xx == value)
+        {
             return;
         }
         m_Xx = value;
@@ -49,8 +57,10 @@
     }
 
     inline float yx() const { return m_Yx; }
-    void yx(float value) {
-        if (m_Yx == value) {
+    void yx(float value)
+    {
+        if (m_Yx == value)
+        {
             return;
         }
         m_Yx = value;
@@ -58,8 +68,10 @@
     }
 
     inline float xy() const { return m_Xy; }
-    void xy(float value) {
-        if (m_Xy == value) {
+    void xy(float value)
+    {
+        if (m_Xy == value)
+        {
             return;
         }
         m_Xy = value;
@@ -67,8 +79,10 @@
     }
 
     inline float yy() const { return m_Yy; }
-    void yy(float value) {
-        if (m_Yy == value) {
+    void yy(float value)
+    {
+        if (m_Yy == value)
+        {
             return;
         }
         m_Yy = value;
@@ -76,8 +90,10 @@
     }
 
     inline float tx() const { return m_Tx; }
-    void tx(float value) {
-        if (m_Tx == value) {
+    void tx(float value)
+    {
+        if (m_Tx == value)
+        {
             return;
         }
         m_Tx = value;
@@ -85,8 +101,10 @@
     }
 
     inline float ty() const { return m_Ty; }
-    void ty(float value) {
-        if (m_Ty == value) {
+    void ty(float value)
+    {
+        if (m_Ty == value)
+        {
             return;
         }
         m_Ty = value;
@@ -94,7 +112,8 @@
     }
 
     Core* clone() const override;
-    void copy(const SkinBase& object) {
+    void copy(const SkinBase& object)
+    {
         m_Xx = object.m_Xx;
         m_Yx = object.m_Yx;
         m_Xy = object.m_Xy;
@@ -104,14 +123,28 @@
         ContainerComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case xxPropertyKey: m_Xx = CoreDoubleType::deserialize(reader); return true;
-            case yxPropertyKey: m_Yx = CoreDoubleType::deserialize(reader); return true;
-            case xyPropertyKey: m_Xy = CoreDoubleType::deserialize(reader); return true;
-            case yyPropertyKey: m_Yy = CoreDoubleType::deserialize(reader); return true;
-            case txPropertyKey: m_Tx = CoreDoubleType::deserialize(reader); return true;
-            case tyPropertyKey: m_Ty = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case xxPropertyKey:
+                m_Xx = CoreDoubleType::deserialize(reader);
+                return true;
+            case yxPropertyKey:
+                m_Yx = CoreDoubleType::deserialize(reader);
+                return true;
+            case xyPropertyKey:
+                m_Xy = CoreDoubleType::deserialize(reader);
+                return true;
+            case yyPropertyKey:
+                m_Yy = CoreDoubleType::deserialize(reader);
+                return true;
+            case txPropertyKey:
+                m_Tx = CoreDoubleType::deserialize(reader);
+                return true;
+            case tyPropertyKey:
+                m_Ty = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return ContainerComponent::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/bones/tendon_base.hpp b/include/rive/generated/bones/tendon_base.hpp
index 6dcd1f5..5ccaed1 100644
--- a/include/rive/generated/bones/tendon_base.hpp
+++ b/include/rive/generated/bones/tendon_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/component.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class TendonBase : public Component {
+namespace rive
+{
+class TendonBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -13,11 +15,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TendonBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -42,8 +48,10 @@
 
 public:
     inline uint32_t boneId() const { return m_BoneId; }
-    void boneId(uint32_t value) {
-        if (m_BoneId == value) {
+    void boneId(uint32_t value)
+    {
+        if (m_BoneId == value)
+        {
             return;
         }
         m_BoneId = value;
@@ -51,8 +59,10 @@
     }
 
     inline float xx() const { return m_Xx; }
-    void xx(float value) {
-        if (m_Xx == value) {
+    void xx(float value)
+    {
+        if (m_Xx == value)
+        {
             return;
         }
         m_Xx = value;
@@ -60,8 +70,10 @@
     }
 
     inline float yx() const { return m_Yx; }
-    void yx(float value) {
-        if (m_Yx == value) {
+    void yx(float value)
+    {
+        if (m_Yx == value)
+        {
             return;
         }
         m_Yx = value;
@@ -69,8 +81,10 @@
     }
 
     inline float xy() const { return m_Xy; }
-    void xy(float value) {
-        if (m_Xy == value) {
+    void xy(float value)
+    {
+        if (m_Xy == value)
+        {
             return;
         }
         m_Xy = value;
@@ -78,8 +92,10 @@
     }
 
     inline float yy() const { return m_Yy; }
-    void yy(float value) {
-        if (m_Yy == value) {
+    void yy(float value)
+    {
+        if (m_Yy == value)
+        {
             return;
         }
         m_Yy = value;
@@ -87,8 +103,10 @@
     }
 
     inline float tx() const { return m_Tx; }
-    void tx(float value) {
-        if (m_Tx == value) {
+    void tx(float value)
+    {
+        if (m_Tx == value)
+        {
             return;
         }
         m_Tx = value;
@@ -96,8 +114,10 @@
     }
 
     inline float ty() const { return m_Ty; }
-    void ty(float value) {
-        if (m_Ty == value) {
+    void ty(float value)
+    {
+        if (m_Ty == value)
+        {
             return;
         }
         m_Ty = value;
@@ -105,7 +125,8 @@
     }
 
     Core* clone() const override;
-    void copy(const TendonBase& object) {
+    void copy(const TendonBase& object)
+    {
         m_BoneId = object.m_BoneId;
         m_Xx = object.m_Xx;
         m_Yx = object.m_Yx;
@@ -116,15 +137,31 @@
         Component::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case boneIdPropertyKey: m_BoneId = CoreUintType::deserialize(reader); return true;
-            case xxPropertyKey: m_Xx = CoreDoubleType::deserialize(reader); return true;
-            case yxPropertyKey: m_Yx = CoreDoubleType::deserialize(reader); return true;
-            case xyPropertyKey: m_Xy = CoreDoubleType::deserialize(reader); return true;
-            case yyPropertyKey: m_Yy = CoreDoubleType::deserialize(reader); return true;
-            case txPropertyKey: m_Tx = CoreDoubleType::deserialize(reader); return true;
-            case tyPropertyKey: m_Ty = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case boneIdPropertyKey:
+                m_BoneId = CoreUintType::deserialize(reader);
+                return true;
+            case xxPropertyKey:
+                m_Xx = CoreDoubleType::deserialize(reader);
+                return true;
+            case yxPropertyKey:
+                m_Yx = CoreDoubleType::deserialize(reader);
+                return true;
+            case xyPropertyKey:
+                m_Xy = CoreDoubleType::deserialize(reader);
+                return true;
+            case yyPropertyKey:
+                m_Yy = CoreDoubleType::deserialize(reader);
+                return true;
+            case txPropertyKey:
+                m_Tx = CoreDoubleType::deserialize(reader);
+                return true;
+            case tyPropertyKey:
+                m_Ty = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return Component::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/bones/weight_base.hpp b/include/rive/generated/bones/weight_base.hpp
index 0b8c40c..a9fa235 100644
--- a/include/rive/generated/bones/weight_base.hpp
+++ b/include/rive/generated/bones/weight_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_WEIGHT_BASE_HPP_
 #include "rive/component.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class WeightBase : public Component {
+namespace rive
+{
+class WeightBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case WeightBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -31,8 +37,10 @@
 
 public:
     inline uint32_t values() const { return m_Values; }
-    void values(uint32_t value) {
-        if (m_Values == value) {
+    void values(uint32_t value)
+    {
+        if (m_Values == value)
+        {
             return;
         }
         m_Values = value;
@@ -40,8 +48,10 @@
     }
 
     inline uint32_t indices() const { return m_Indices; }
-    void indices(uint32_t value) {
-        if (m_Indices == value) {
+    void indices(uint32_t value)
+    {
+        if (m_Indices == value)
+        {
             return;
         }
         m_Indices = value;
@@ -49,16 +59,23 @@
     }
 
     Core* clone() const override;
-    void copy(const WeightBase& object) {
+    void copy(const WeightBase& object)
+    {
         m_Values = object.m_Values;
         m_Indices = object.m_Indices;
         Component::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case valuesPropertyKey: m_Values = CoreUintType::deserialize(reader); return true;
-            case indicesPropertyKey: m_Indices = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case valuesPropertyKey:
+                m_Values = CoreUintType::deserialize(reader);
+                return true;
+            case indicesPropertyKey:
+                m_Indices = CoreUintType::deserialize(reader);
+                return true;
         }
         return Component::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/component_base.hpp b/include/rive/generated/component_base.hpp
index df47b60..46463bd 100644
--- a/include/rive/generated/component_base.hpp
+++ b/include/rive/generated/component_base.hpp
@@ -4,8 +4,10 @@
 #include "rive/core.hpp"
 #include "rive/core/field_types/core_string_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class ComponentBase : public Core {
+namespace rive
+{
+class ComponentBase : public Core
+{
 protected:
     typedef Core Super;
 
@@ -14,10 +16,14 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
-            case ComponentBase::typeKey: return true;
-            default: return false;
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -32,8 +38,10 @@
 
 public:
     inline const std::string& name() const { return m_Name; }
-    void name(std::string value) {
-        if (m_Name == value) {
+    void name(std::string value)
+    {
+        if (m_Name == value)
+        {
             return;
         }
         m_Name = value;
@@ -41,23 +49,32 @@
     }
 
     inline uint32_t parentId() const { return m_ParentId; }
-    void parentId(uint32_t value) {
-        if (m_ParentId == value) {
+    void parentId(uint32_t value)
+    {
+        if (m_ParentId == value)
+        {
             return;
         }
         m_ParentId = value;
         parentIdChanged();
     }
 
-    void copy(const ComponentBase& object) {
+    void copy(const ComponentBase& object)
+    {
         m_Name = object.m_Name;
         m_ParentId = object.m_ParentId;
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case namePropertyKey: m_Name = CoreStringType::deserialize(reader); return true;
-            case parentIdPropertyKey: m_ParentId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case namePropertyKey:
+                m_Name = CoreStringType::deserialize(reader);
+                return true;
+            case parentIdPropertyKey:
+                m_ParentId = CoreUintType::deserialize(reader);
+                return true;
         }
         return false;
     }
diff --git a/include/rive/generated/constraints/constraint_base.hpp b/include/rive/generated/constraints/constraint_base.hpp
index 3ac36ae..148a3f0 100644
--- a/include/rive/generated/constraints/constraint_base.hpp
+++ b/include/rive/generated/constraints/constraint_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_CONSTRAINT_BASE_HPP_
 #include "rive/component.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class ConstraintBase : public Component {
+namespace rive
+{
+class ConstraintBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,22 +35,29 @@
 
 public:
     inline float strength() const { return m_Strength; }
-    void strength(float value) {
-        if (m_Strength == value) {
+    void strength(float value)
+    {
+        if (m_Strength == value)
+        {
             return;
         }
         m_Strength = value;
         strengthChanged();
     }
 
-    void copy(const ConstraintBase& object) {
+    void copy(const ConstraintBase& object)
+    {
         m_Strength = object.m_Strength;
         Component::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case strengthPropertyKey: m_Strength = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case strengthPropertyKey:
+                m_Strength = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return Component::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/constraints/distance_constraint_base.hpp b/include/rive/generated/constraints/distance_constraint_base.hpp
index d2fdd1d..0c8b5ae 100644
--- a/include/rive/generated/constraints/distance_constraint_base.hpp
+++ b/include/rive/generated/constraints/distance_constraint_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/constraints/targeted_constraint.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class DistanceConstraintBase : public TargetedConstraint {
+namespace rive
+{
+class DistanceConstraintBase : public TargetedConstraint
+{
 protected:
     typedef TargetedConstraint Super;
 
@@ -13,13 +15,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case DistanceConstraintBase::typeKey:
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -34,8 +40,10 @@
 
 public:
     inline float distance() const { return m_Distance; }
-    void distance(float value) {
-        if (m_Distance == value) {
+    void distance(float value)
+    {
+        if (m_Distance == value)
+        {
             return;
         }
         m_Distance = value;
@@ -43,8 +51,10 @@
     }
 
     inline uint32_t modeValue() const { return m_ModeValue; }
-    void modeValue(uint32_t value) {
-        if (m_ModeValue == value) {
+    void modeValue(uint32_t value)
+    {
+        if (m_ModeValue == value)
+        {
             return;
         }
         m_ModeValue = value;
@@ -52,16 +62,23 @@
     }
 
     Core* clone() const override;
-    void copy(const DistanceConstraintBase& object) {
+    void copy(const DistanceConstraintBase& object)
+    {
         m_Distance = object.m_Distance;
         m_ModeValue = object.m_ModeValue;
         TargetedConstraint::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case distancePropertyKey: m_Distance = CoreDoubleType::deserialize(reader); return true;
-            case modeValuePropertyKey: m_ModeValue = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case distancePropertyKey:
+                m_Distance = CoreDoubleType::deserialize(reader);
+                return true;
+            case modeValuePropertyKey:
+                m_ModeValue = CoreUintType::deserialize(reader);
+                return true;
         }
         return TargetedConstraint::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/constraints/ik_constraint_base.hpp b/include/rive/generated/constraints/ik_constraint_base.hpp
index 0aa150e..ec38ee0 100644
--- a/include/rive/generated/constraints/ik_constraint_base.hpp
+++ b/include/rive/generated/constraints/ik_constraint_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/constraints/targeted_constraint.hpp"
 #include "rive/core/field_types/core_bool_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class IKConstraintBase : public TargetedConstraint {
+namespace rive
+{
+class IKConstraintBase : public TargetedConstraint
+{
 protected:
     typedef TargetedConstraint Super;
 
@@ -13,13 +15,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case IKConstraintBase::typeKey:
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -34,8 +40,10 @@
 
 public:
     inline bool invertDirection() const { return m_InvertDirection; }
-    void invertDirection(bool value) {
-        if (m_InvertDirection == value) {
+    void invertDirection(bool value)
+    {
+        if (m_InvertDirection == value)
+        {
             return;
         }
         m_InvertDirection = value;
@@ -43,8 +51,10 @@
     }
 
     inline uint32_t parentBoneCount() const { return m_ParentBoneCount; }
-    void parentBoneCount(uint32_t value) {
-        if (m_ParentBoneCount == value) {
+    void parentBoneCount(uint32_t value)
+    {
+        if (m_ParentBoneCount == value)
+        {
             return;
         }
         m_ParentBoneCount = value;
@@ -52,14 +62,17 @@
     }
 
     Core* clone() const override;
-    void copy(const IKConstraintBase& object) {
+    void copy(const IKConstraintBase& object)
+    {
         m_InvertDirection = object.m_InvertDirection;
         m_ParentBoneCount = object.m_ParentBoneCount;
         TargetedConstraint::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case invertDirectionPropertyKey:
                 m_InvertDirection = CoreBoolType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/constraints/rotation_constraint_base.hpp b/include/rive/generated/constraints/rotation_constraint_base.hpp
index b8dee2f..6e34fcb 100644
--- a/include/rive/generated/constraints/rotation_constraint_base.hpp
+++ b/include/rive/generated/constraints/rotation_constraint_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_ROTATION_CONSTRAINT_BASE_HPP_
 #define _RIVE_ROTATION_CONSTRAINT_BASE_HPP_
 #include "rive/constraints/transform_component_constraint.hpp"
-namespace rive {
-class RotationConstraintBase : public TransformComponentConstraint {
+namespace rive
+{
+class RotationConstraintBase : public TransformComponentConstraint
+{
 protected:
     typedef TransformComponentConstraint Super;
 
@@ -11,15 +13,19 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case RotationConstraintBase::typeKey:
             case TransformComponentConstraintBase::typeKey:
             case TransformSpaceConstraintBase::typeKey:
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/constraints/scale_constraint_base.hpp b/include/rive/generated/constraints/scale_constraint_base.hpp
index 7072eae..abe8729 100644
--- a/include/rive/generated/constraints/scale_constraint_base.hpp
+++ b/include/rive/generated/constraints/scale_constraint_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_SCALE_CONSTRAINT_BASE_HPP_
 #define _RIVE_SCALE_CONSTRAINT_BASE_HPP_
 #include "rive/constraints/transform_component_constraint_y.hpp"
-namespace rive {
-class ScaleConstraintBase : public TransformComponentConstraintY {
+namespace rive
+{
+class ScaleConstraintBase : public TransformComponentConstraintY
+{
 protected:
     typedef TransformComponentConstraintY Super;
 
@@ -11,16 +13,20 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ScaleConstraintBase::typeKey:
             case TransformComponentConstraintYBase::typeKey:
             case TransformComponentConstraintBase::typeKey:
             case TransformSpaceConstraintBase::typeKey:
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/constraints/targeted_constraint_base.hpp b/include/rive/generated/constraints/targeted_constraint_base.hpp
index e7de5a4..e236d0f 100644
--- a/include/rive/generated/constraints/targeted_constraint_base.hpp
+++ b/include/rive/generated/constraints/targeted_constraint_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TARGETED_CONSTRAINT_BASE_HPP_
 #include "rive/constraints/constraint.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class TargetedConstraintBase : public Constraint {
+namespace rive
+{
+class TargetedConstraintBase : public Constraint
+{
 protected:
     typedef Constraint Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,22 +36,29 @@
 
 public:
     inline uint32_t targetId() const { return m_TargetId; }
-    void targetId(uint32_t value) {
-        if (m_TargetId == value) {
+    void targetId(uint32_t value)
+    {
+        if (m_TargetId == value)
+        {
             return;
         }
         m_TargetId = value;
         targetIdChanged();
     }
 
-    void copy(const TargetedConstraintBase& object) {
+    void copy(const TargetedConstraintBase& object)
+    {
         m_TargetId = object.m_TargetId;
         Constraint::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case targetIdPropertyKey: m_TargetId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case targetIdPropertyKey:
+                m_TargetId = CoreUintType::deserialize(reader);
+                return true;
         }
         return Constraint::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/constraints/transform_component_constraint_base.hpp b/include/rive/generated/constraints/transform_component_constraint_base.hpp
index 2cd84ad..e52573a 100644
--- a/include/rive/generated/constraints/transform_component_constraint_base.hpp
+++ b/include/rive/generated/constraints/transform_component_constraint_base.hpp
@@ -4,8 +4,10 @@
 #include "rive/core/field_types/core_bool_type.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class TransformComponentConstraintBase : public TransformSpaceConstraint {
+namespace rive
+{
+class TransformComponentConstraintBase : public TransformSpaceConstraint
+{
 protected:
     typedef TransformSpaceConstraint Super;
 
@@ -14,14 +16,18 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TransformComponentConstraintBase::typeKey:
             case TransformSpaceConstraintBase::typeKey:
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -48,8 +54,10 @@
 
 public:
     inline uint32_t minMaxSpaceValue() const { return m_MinMaxSpaceValue; }
-    void minMaxSpaceValue(uint32_t value) {
-        if (m_MinMaxSpaceValue == value) {
+    void minMaxSpaceValue(uint32_t value)
+    {
+        if (m_MinMaxSpaceValue == value)
+        {
             return;
         }
         m_MinMaxSpaceValue = value;
@@ -57,8 +65,10 @@
     }
 
     inline float copyFactor() const { return m_CopyFactor; }
-    void copyFactor(float value) {
-        if (m_CopyFactor == value) {
+    void copyFactor(float value)
+    {
+        if (m_CopyFactor == value)
+        {
             return;
         }
         m_CopyFactor = value;
@@ -66,8 +76,10 @@
     }
 
     inline float minValue() const { return m_MinValue; }
-    void minValue(float value) {
-        if (m_MinValue == value) {
+    void minValue(float value)
+    {
+        if (m_MinValue == value)
+        {
             return;
         }
         m_MinValue = value;
@@ -75,8 +87,10 @@
     }
 
     inline float maxValue() const { return m_MaxValue; }
-    void maxValue(float value) {
-        if (m_MaxValue == value) {
+    void maxValue(float value)
+    {
+        if (m_MaxValue == value)
+        {
             return;
         }
         m_MaxValue = value;
@@ -84,8 +98,10 @@
     }
 
     inline bool offset() const { return m_Offset; }
-    void offset(bool value) {
-        if (m_Offset == value) {
+    void offset(bool value)
+    {
+        if (m_Offset == value)
+        {
             return;
         }
         m_Offset = value;
@@ -93,8 +109,10 @@
     }
 
     inline bool doesCopy() const { return m_DoesCopy; }
-    void doesCopy(bool value) {
-        if (m_DoesCopy == value) {
+    void doesCopy(bool value)
+    {
+        if (m_DoesCopy == value)
+        {
             return;
         }
         m_DoesCopy = value;
@@ -102,8 +120,10 @@
     }
 
     inline bool min() const { return m_Min; }
-    void min(bool value) {
-        if (m_Min == value) {
+    void min(bool value)
+    {
+        if (m_Min == value)
+        {
             return;
         }
         m_Min = value;
@@ -111,15 +131,18 @@
     }
 
     inline bool max() const { return m_Max; }
-    void max(bool value) {
-        if (m_Max == value) {
+    void max(bool value)
+    {
+        if (m_Max == value)
+        {
             return;
         }
         m_Max = value;
         maxChanged();
     }
 
-    void copy(const TransformComponentConstraintBase& object) {
+    void copy(const TransformComponentConstraintBase& object)
+    {
         m_MinMaxSpaceValue = object.m_MinMaxSpaceValue;
         m_CopyFactor = object.m_CopyFactor;
         m_MinValue = object.m_MinValue;
@@ -131,20 +154,34 @@
         TransformSpaceConstraint::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case minMaxSpaceValuePropertyKey:
                 m_MinMaxSpaceValue = CoreUintType::deserialize(reader);
                 return true;
             case copyFactorPropertyKey:
                 m_CopyFactor = CoreDoubleType::deserialize(reader);
                 return true;
-            case minValuePropertyKey: m_MinValue = CoreDoubleType::deserialize(reader); return true;
-            case maxValuePropertyKey: m_MaxValue = CoreDoubleType::deserialize(reader); return true;
-            case offsetPropertyKey: m_Offset = CoreBoolType::deserialize(reader); return true;
-            case doesCopyPropertyKey: m_DoesCopy = CoreBoolType::deserialize(reader); return true;
-            case minPropertyKey: m_Min = CoreBoolType::deserialize(reader); return true;
-            case maxPropertyKey: m_Max = CoreBoolType::deserialize(reader); return true;
+            case minValuePropertyKey:
+                m_MinValue = CoreDoubleType::deserialize(reader);
+                return true;
+            case maxValuePropertyKey:
+                m_MaxValue = CoreDoubleType::deserialize(reader);
+                return true;
+            case offsetPropertyKey:
+                m_Offset = CoreBoolType::deserialize(reader);
+                return true;
+            case doesCopyPropertyKey:
+                m_DoesCopy = CoreBoolType::deserialize(reader);
+                return true;
+            case minPropertyKey:
+                m_Min = CoreBoolType::deserialize(reader);
+                return true;
+            case maxPropertyKey:
+                m_Max = CoreBoolType::deserialize(reader);
+                return true;
         }
         return TransformSpaceConstraint::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/constraints/transform_component_constraint_y_base.hpp b/include/rive/generated/constraints/transform_component_constraint_y_base.hpp
index 1dbb2cd..eea8b04 100644
--- a/include/rive/generated/constraints/transform_component_constraint_y_base.hpp
+++ b/include/rive/generated/constraints/transform_component_constraint_y_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/constraints/transform_component_constraint.hpp"
 #include "rive/core/field_types/core_bool_type.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class TransformComponentConstraintYBase : public TransformComponentConstraint {
+namespace rive
+{
+class TransformComponentConstraintYBase : public TransformComponentConstraint
+{
 protected:
     typedef TransformComponentConstraint Super;
 
@@ -13,15 +15,19 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TransformComponentConstraintYBase::typeKey:
             case TransformComponentConstraintBase::typeKey:
             case TransformSpaceConstraintBase::typeKey:
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -44,8 +50,10 @@
 
 public:
     inline float copyFactorY() const { return m_CopyFactorY; }
-    void copyFactorY(float value) {
-        if (m_CopyFactorY == value) {
+    void copyFactorY(float value)
+    {
+        if (m_CopyFactorY == value)
+        {
             return;
         }
         m_CopyFactorY = value;
@@ -53,8 +61,10 @@
     }
 
     inline float minValueY() const { return m_MinValueY; }
-    void minValueY(float value) {
-        if (m_MinValueY == value) {
+    void minValueY(float value)
+    {
+        if (m_MinValueY == value)
+        {
             return;
         }
         m_MinValueY = value;
@@ -62,8 +72,10 @@
     }
 
     inline float maxValueY() const { return m_MaxValueY; }
-    void maxValueY(float value) {
-        if (m_MaxValueY == value) {
+    void maxValueY(float value)
+    {
+        if (m_MaxValueY == value)
+        {
             return;
         }
         m_MaxValueY = value;
@@ -71,8 +83,10 @@
     }
 
     inline bool doesCopyY() const { return m_DoesCopyY; }
-    void doesCopyY(bool value) {
-        if (m_DoesCopyY == value) {
+    void doesCopyY(bool value)
+    {
+        if (m_DoesCopyY == value)
+        {
             return;
         }
         m_DoesCopyY = value;
@@ -80,8 +94,10 @@
     }
 
     inline bool minY() const { return m_MinY; }
-    void minY(bool value) {
-        if (m_MinY == value) {
+    void minY(bool value)
+    {
+        if (m_MinY == value)
+        {
             return;
         }
         m_MinY = value;
@@ -89,15 +105,18 @@
     }
 
     inline bool maxY() const { return m_MaxY; }
-    void maxY(bool value) {
-        if (m_MaxY == value) {
+    void maxY(bool value)
+    {
+        if (m_MaxY == value)
+        {
             return;
         }
         m_MaxY = value;
         maxYChanged();
     }
 
-    void copy(const TransformComponentConstraintYBase& object) {
+    void copy(const TransformComponentConstraintYBase& object)
+    {
         m_CopyFactorY = object.m_CopyFactorY;
         m_MinValueY = object.m_MinValueY;
         m_MaxValueY = object.m_MaxValueY;
@@ -107,8 +126,10 @@
         TransformComponentConstraint::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case copyFactorYPropertyKey:
                 m_CopyFactorY = CoreDoubleType::deserialize(reader);
                 return true;
@@ -118,9 +139,15 @@
             case maxValueYPropertyKey:
                 m_MaxValueY = CoreDoubleType::deserialize(reader);
                 return true;
-            case doesCopyYPropertyKey: m_DoesCopyY = CoreBoolType::deserialize(reader); return true;
-            case minYPropertyKey: m_MinY = CoreBoolType::deserialize(reader); return true;
-            case maxYPropertyKey: m_MaxY = CoreBoolType::deserialize(reader); return true;
+            case doesCopyYPropertyKey:
+                m_DoesCopyY = CoreBoolType::deserialize(reader);
+                return true;
+            case minYPropertyKey:
+                m_MinY = CoreBoolType::deserialize(reader);
+                return true;
+            case maxYPropertyKey:
+                m_MaxY = CoreBoolType::deserialize(reader);
+                return true;
         }
         return TransformComponentConstraint::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/constraints/transform_constraint_base.hpp b/include/rive/generated/constraints/transform_constraint_base.hpp
index c265ef9..80ffb0e 100644
--- a/include/rive/generated/constraints/transform_constraint_base.hpp
+++ b/include/rive/generated/constraints/transform_constraint_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_TRANSFORM_CONSTRAINT_BASE_HPP_
 #define _RIVE_TRANSFORM_CONSTRAINT_BASE_HPP_
 #include "rive/constraints/transform_space_constraint.hpp"
-namespace rive {
-class TransformConstraintBase : public TransformSpaceConstraint {
+namespace rive
+{
+class TransformConstraintBase : public TransformSpaceConstraint
+{
 protected:
     typedef TransformSpaceConstraint Super;
 
@@ -11,14 +13,18 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TransformConstraintBase::typeKey:
             case TransformSpaceConstraintBase::typeKey:
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/constraints/transform_space_constraint_base.hpp b/include/rive/generated/constraints/transform_space_constraint_base.hpp
index 159c398..29f4466 100644
--- a/include/rive/generated/constraints/transform_space_constraint_base.hpp
+++ b/include/rive/generated/constraints/transform_space_constraint_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSFORM_SPACE_CONSTRAINT_BASE_HPP_
 #include "rive/constraints/targeted_constraint.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class TransformSpaceConstraintBase : public TargetedConstraint {
+namespace rive
+{
+class TransformSpaceConstraintBase : public TargetedConstraint
+{
 protected:
     typedef TargetedConstraint Super;
 
@@ -12,13 +14,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TransformSpaceConstraintBase::typeKey:
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -33,8 +39,10 @@
 
 public:
     inline uint32_t sourceSpaceValue() const { return m_SourceSpaceValue; }
-    void sourceSpaceValue(uint32_t value) {
-        if (m_SourceSpaceValue == value) {
+    void sourceSpaceValue(uint32_t value)
+    {
+        if (m_SourceSpaceValue == value)
+        {
             return;
         }
         m_SourceSpaceValue = value;
@@ -42,22 +50,27 @@
     }
 
     inline uint32_t destSpaceValue() const { return m_DestSpaceValue; }
-    void destSpaceValue(uint32_t value) {
-        if (m_DestSpaceValue == value) {
+    void destSpaceValue(uint32_t value)
+    {
+        if (m_DestSpaceValue == value)
+        {
             return;
         }
         m_DestSpaceValue = value;
         destSpaceValueChanged();
     }
 
-    void copy(const TransformSpaceConstraintBase& object) {
+    void copy(const TransformSpaceConstraintBase& object)
+    {
         m_SourceSpaceValue = object.m_SourceSpaceValue;
         m_DestSpaceValue = object.m_DestSpaceValue;
         TargetedConstraint::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case sourceSpaceValuePropertyKey:
                 m_SourceSpaceValue = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/constraints/translation_constraint_base.hpp b/include/rive/generated/constraints/translation_constraint_base.hpp
index bb20d98..26c9751 100644
--- a/include/rive/generated/constraints/translation_constraint_base.hpp
+++ b/include/rive/generated/constraints/translation_constraint_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_TRANSLATION_CONSTRAINT_BASE_HPP_
 #define _RIVE_TRANSLATION_CONSTRAINT_BASE_HPP_
 #include "rive/constraints/transform_component_constraint_y.hpp"
-namespace rive {
-class TranslationConstraintBase : public TransformComponentConstraintY {
+namespace rive
+{
+class TranslationConstraintBase : public TransformComponentConstraintY
+{
 protected:
     typedef TransformComponentConstraintY Super;
 
@@ -11,16 +13,20 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TranslationConstraintBase::typeKey:
             case TransformComponentConstraintYBase::typeKey:
             case TransformComponentConstraintBase::typeKey:
             case TransformSpaceConstraintBase::typeKey:
             case TargetedConstraintBase::typeKey:
             case ConstraintBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/container_component_base.hpp b/include/rive/generated/container_component_base.hpp
index f50a795..7bdb624 100644
--- a/include/rive/generated/container_component_base.hpp
+++ b/include/rive/generated/container_component_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_CONTAINER_COMPONENT_BASE_HPP_
 #define _RIVE_CONTAINER_COMPONENT_BASE_HPP_
 #include "rive/component.hpp"
-namespace rive {
-class ContainerComponentBase : public Component {
+namespace rive
+{
+class ContainerComponentBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -11,11 +13,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/core_registry.hpp b/include/rive/generated/core_registry.hpp
index 9e05402..73f965a 100644
--- a/include/rive/generated/core_registry.hpp
+++ b/include/rive/generated/core_registry.hpp
@@ -116,108 +116,204 @@
 #include "rive/shapes/vertex.hpp"
 #include "rive/transform_component.hpp"
 #include "rive/world_transform_component.hpp"
-namespace rive {
-class CoreRegistry {
+namespace rive
+{
+class CoreRegistry
+{
 public:
-    static Core* makeCoreInstance(int typeKey) {
-        switch (typeKey) {
-            case DrawTargetBase::typeKey: return new DrawTarget();
-            case DistanceConstraintBase::typeKey: return new DistanceConstraint();
-            case IKConstraintBase::typeKey: return new IKConstraint();
-            case TranslationConstraintBase::typeKey: return new TranslationConstraint();
-            case TransformConstraintBase::typeKey: return new TransformConstraint();
-            case ScaleConstraintBase::typeKey: return new ScaleConstraint();
-            case RotationConstraintBase::typeKey: return new RotationConstraint();
-            case NodeBase::typeKey: return new Node();
-            case NestedArtboardBase::typeKey: return new NestedArtboard();
-            case NestedSimpleAnimationBase::typeKey: return new NestedSimpleAnimation();
-            case AnimationStateBase::typeKey: return new AnimationState();
-            case NestedTriggerBase::typeKey: return new NestedTrigger();
-            case KeyedObjectBase::typeKey: return new KeyedObject();
-            case BlendAnimationDirectBase::typeKey: return new BlendAnimationDirect();
-            case StateMachineNumberBase::typeKey: return new StateMachineNumber();
-            case TransitionTriggerConditionBase::typeKey: return new TransitionTriggerCondition();
-            case KeyedPropertyBase::typeKey: return new KeyedProperty();
-            case StateMachineListenerBase::typeKey: return new StateMachineListener();
-            case KeyFrameIdBase::typeKey: return new KeyFrameId();
-            case KeyFrameBoolBase::typeKey: return new KeyFrameBool();
-            case ListenerBoolChangeBase::typeKey: return new ListenerBoolChange();
-            case ListenerAlignTargetBase::typeKey: return new ListenerAlignTarget();
-            case TransitionNumberConditionBase::typeKey: return new TransitionNumberCondition();
-            case AnyStateBase::typeKey: return new AnyState();
-            case StateMachineLayerBase::typeKey: return new StateMachineLayer();
-            case AnimationBase::typeKey: return new Animation();
-            case ListenerNumberChangeBase::typeKey: return new ListenerNumberChange();
-            case CubicInterpolatorBase::typeKey: return new CubicInterpolator();
-            case StateTransitionBase::typeKey: return new StateTransition();
-            case NestedBoolBase::typeKey: return new NestedBool();
-            case KeyFrameDoubleBase::typeKey: return new KeyFrameDouble();
-            case KeyFrameColorBase::typeKey: return new KeyFrameColor();
-            case StateMachineBase::typeKey: return new StateMachine();
-            case EntryStateBase::typeKey: return new EntryState();
-            case LinearAnimationBase::typeKey: return new LinearAnimation();
-            case StateMachineTriggerBase::typeKey: return new StateMachineTrigger();
-            case ListenerTriggerChangeBase::typeKey: return new ListenerTriggerChange();
-            case BlendStateDirectBase::typeKey: return new BlendStateDirect();
-            case NestedStateMachineBase::typeKey: return new NestedStateMachine();
-            case ExitStateBase::typeKey: return new ExitState();
-            case NestedNumberBase::typeKey: return new NestedNumber();
-            case BlendState1DBase::typeKey: return new BlendState1D();
-            case NestedRemapAnimationBase::typeKey: return new NestedRemapAnimation();
-            case TransitionBoolConditionBase::typeKey: return new TransitionBoolCondition();
-            case BlendStateTransitionBase::typeKey: return new BlendStateTransition();
-            case StateMachineBoolBase::typeKey: return new StateMachineBool();
-            case BlendAnimation1DBase::typeKey: return new BlendAnimation1D();
-            case LinearGradientBase::typeKey: return new LinearGradient();
-            case RadialGradientBase::typeKey: return new RadialGradient();
-            case StrokeBase::typeKey: return new Stroke();
-            case SolidColorBase::typeKey: return new SolidColor();
-            case GradientStopBase::typeKey: return new GradientStop();
-            case TrimPathBase::typeKey: return new TrimPath();
-            case FillBase::typeKey: return new Fill();
-            case MeshVertexBase::typeKey: return new MeshVertex();
-            case ShapeBase::typeKey: return new Shape();
-            case StraightVertexBase::typeKey: return new StraightVertex();
-            case CubicAsymmetricVertexBase::typeKey: return new CubicAsymmetricVertex();
-            case MeshBase::typeKey: return new Mesh();
-            case PointsPathBase::typeKey: return new PointsPath();
-            case ContourMeshVertexBase::typeKey: return new ContourMeshVertex();
-            case RectangleBase::typeKey: return new Rectangle();
-            case CubicMirroredVertexBase::typeKey: return new CubicMirroredVertex();
-            case TriangleBase::typeKey: return new Triangle();
-            case EllipseBase::typeKey: return new Ellipse();
-            case ClippingShapeBase::typeKey: return new ClippingShape();
-            case PolygonBase::typeKey: return new Polygon();
-            case StarBase::typeKey: return new Star();
-            case ImageBase::typeKey: return new Image();
-            case CubicDetachedVertexBase::typeKey: return new CubicDetachedVertex();
-            case DrawRulesBase::typeKey: return new DrawRules();
-            case ArtboardBase::typeKey: return new Artboard();
-            case BackboardBase::typeKey: return new Backboard();
-            case WeightBase::typeKey: return new Weight();
-            case BoneBase::typeKey: return new Bone();
-            case RootBoneBase::typeKey: return new RootBone();
-            case SkinBase::typeKey: return new Skin();
-            case TendonBase::typeKey: return new Tendon();
-            case CubicWeightBase::typeKey: return new CubicWeight();
-            case FolderBase::typeKey: return new Folder();
-            case ImageAssetBase::typeKey: return new ImageAsset();
-            case FileAssetContentsBase::typeKey: return new FileAssetContents();
+    static Core* makeCoreInstance(int typeKey)
+    {
+        switch (typeKey)
+        {
+            case DrawTargetBase::typeKey:
+                return new DrawTarget();
+            case DistanceConstraintBase::typeKey:
+                return new DistanceConstraint();
+            case IKConstraintBase::typeKey:
+                return new IKConstraint();
+            case TranslationConstraintBase::typeKey:
+                return new TranslationConstraint();
+            case TransformConstraintBase::typeKey:
+                return new TransformConstraint();
+            case ScaleConstraintBase::typeKey:
+                return new ScaleConstraint();
+            case RotationConstraintBase::typeKey:
+                return new RotationConstraint();
+            case NodeBase::typeKey:
+                return new Node();
+            case NestedArtboardBase::typeKey:
+                return new NestedArtboard();
+            case NestedSimpleAnimationBase::typeKey:
+                return new NestedSimpleAnimation();
+            case AnimationStateBase::typeKey:
+                return new AnimationState();
+            case NestedTriggerBase::typeKey:
+                return new NestedTrigger();
+            case KeyedObjectBase::typeKey:
+                return new KeyedObject();
+            case BlendAnimationDirectBase::typeKey:
+                return new BlendAnimationDirect();
+            case StateMachineNumberBase::typeKey:
+                return new StateMachineNumber();
+            case TransitionTriggerConditionBase::typeKey:
+                return new TransitionTriggerCondition();
+            case KeyedPropertyBase::typeKey:
+                return new KeyedProperty();
+            case StateMachineListenerBase::typeKey:
+                return new StateMachineListener();
+            case KeyFrameIdBase::typeKey:
+                return new KeyFrameId();
+            case KeyFrameBoolBase::typeKey:
+                return new KeyFrameBool();
+            case ListenerBoolChangeBase::typeKey:
+                return new ListenerBoolChange();
+            case ListenerAlignTargetBase::typeKey:
+                return new ListenerAlignTarget();
+            case TransitionNumberConditionBase::typeKey:
+                return new TransitionNumberCondition();
+            case AnyStateBase::typeKey:
+                return new AnyState();
+            case StateMachineLayerBase::typeKey:
+                return new StateMachineLayer();
+            case AnimationBase::typeKey:
+                return new Animation();
+            case ListenerNumberChangeBase::typeKey:
+                return new ListenerNumberChange();
+            case CubicInterpolatorBase::typeKey:
+                return new CubicInterpolator();
+            case StateTransitionBase::typeKey:
+                return new StateTransition();
+            case NestedBoolBase::typeKey:
+                return new NestedBool();
+            case KeyFrameDoubleBase::typeKey:
+                return new KeyFrameDouble();
+            case KeyFrameColorBase::typeKey:
+                return new KeyFrameColor();
+            case StateMachineBase::typeKey:
+                return new StateMachine();
+            case EntryStateBase::typeKey:
+                return new EntryState();
+            case LinearAnimationBase::typeKey:
+                return new LinearAnimation();
+            case StateMachineTriggerBase::typeKey:
+                return new StateMachineTrigger();
+            case ListenerTriggerChangeBase::typeKey:
+                return new ListenerTriggerChange();
+            case BlendStateDirectBase::typeKey:
+                return new BlendStateDirect();
+            case NestedStateMachineBase::typeKey:
+                return new NestedStateMachine();
+            case ExitStateBase::typeKey:
+                return new ExitState();
+            case NestedNumberBase::typeKey:
+                return new NestedNumber();
+            case BlendState1DBase::typeKey:
+                return new BlendState1D();
+            case NestedRemapAnimationBase::typeKey:
+                return new NestedRemapAnimation();
+            case TransitionBoolConditionBase::typeKey:
+                return new TransitionBoolCondition();
+            case BlendStateTransitionBase::typeKey:
+                return new BlendStateTransition();
+            case StateMachineBoolBase::typeKey:
+                return new StateMachineBool();
+            case BlendAnimation1DBase::typeKey:
+                return new BlendAnimation1D();
+            case LinearGradientBase::typeKey:
+                return new LinearGradient();
+            case RadialGradientBase::typeKey:
+                return new RadialGradient();
+            case StrokeBase::typeKey:
+                return new Stroke();
+            case SolidColorBase::typeKey:
+                return new SolidColor();
+            case GradientStopBase::typeKey:
+                return new GradientStop();
+            case TrimPathBase::typeKey:
+                return new TrimPath();
+            case FillBase::typeKey:
+                return new Fill();
+            case MeshVertexBase::typeKey:
+                return new MeshVertex();
+            case ShapeBase::typeKey:
+                return new Shape();
+            case StraightVertexBase::typeKey:
+                return new StraightVertex();
+            case CubicAsymmetricVertexBase::typeKey:
+                return new CubicAsymmetricVertex();
+            case MeshBase::typeKey:
+                return new Mesh();
+            case PointsPathBase::typeKey:
+                return new PointsPath();
+            case ContourMeshVertexBase::typeKey:
+                return new ContourMeshVertex();
+            case RectangleBase::typeKey:
+                return new Rectangle();
+            case CubicMirroredVertexBase::typeKey:
+                return new CubicMirroredVertex();
+            case TriangleBase::typeKey:
+                return new Triangle();
+            case EllipseBase::typeKey:
+                return new Ellipse();
+            case ClippingShapeBase::typeKey:
+                return new ClippingShape();
+            case PolygonBase::typeKey:
+                return new Polygon();
+            case StarBase::typeKey:
+                return new Star();
+            case ImageBase::typeKey:
+                return new Image();
+            case CubicDetachedVertexBase::typeKey:
+                return new CubicDetachedVertex();
+            case DrawRulesBase::typeKey:
+                return new DrawRules();
+            case ArtboardBase::typeKey:
+                return new Artboard();
+            case BackboardBase::typeKey:
+                return new Backboard();
+            case WeightBase::typeKey:
+                return new Weight();
+            case BoneBase::typeKey:
+                return new Bone();
+            case RootBoneBase::typeKey:
+                return new RootBone();
+            case SkinBase::typeKey:
+                return new Skin();
+            case TendonBase::typeKey:
+                return new Tendon();
+            case CubicWeightBase::typeKey:
+                return new CubicWeight();
+            case FolderBase::typeKey:
+                return new Folder();
+            case ImageAssetBase::typeKey:
+                return new ImageAsset();
+            case FileAssetContentsBase::typeKey:
+                return new FileAssetContents();
         }
         return nullptr;
     }
-    static void setString(Core* object, int propertyKey, std::string value) {
-        switch (propertyKey) {
-            case ComponentBase::namePropertyKey: object->as<ComponentBase>()->name(value); break;
+    static void setString(Core* object, int propertyKey, std::string value)
+    {
+        switch (propertyKey)
+        {
+            case ComponentBase::namePropertyKey:
+                object->as<ComponentBase>()->name(value);
+                break;
             case StateMachineComponentBase::namePropertyKey:
                 object->as<StateMachineComponentBase>()->name(value);
                 break;
-            case AnimationBase::namePropertyKey: object->as<AnimationBase>()->name(value); break;
-            case AssetBase::namePropertyKey: object->as<AssetBase>()->name(value); break;
+            case AnimationBase::namePropertyKey:
+                object->as<AnimationBase>()->name(value);
+                break;
+            case AssetBase::namePropertyKey:
+                object->as<AssetBase>()->name(value);
+                break;
         }
     }
-    static void setUint(Core* object, int propertyKey, uint32_t value) {
-        switch (propertyKey) {
+    static void setUint(Core* object, int propertyKey, uint32_t value)
+    {
+        switch (propertyKey)
+        {
             case ComponentBase::parentIdPropertyKey:
                 object->as<ComponentBase>()->parentId(value);
                 break;
@@ -287,7 +383,9 @@
             case StateMachineListenerBase::listenerTypeValuePropertyKey:
                 object->as<StateMachineListenerBase>()->listenerTypeValue(value);
                 break;
-            case KeyFrameBase::framePropertyKey: object->as<KeyFrameBase>()->frame(value); break;
+            case KeyFrameBase::framePropertyKey:
+                object->as<KeyFrameBase>()->frame(value);
+                break;
             case KeyFrameBase::interpolationTypePropertyKey:
                 object->as<KeyFrameBase>()->interpolationType(value);
                 break;
@@ -339,30 +437,48 @@
             case BlendStateTransitionBase::exitBlendAnimationIdPropertyKey:
                 object->as<BlendStateTransitionBase>()->exitBlendAnimationId(value);
                 break;
-            case StrokeBase::capPropertyKey: object->as<StrokeBase>()->cap(value); break;
-            case StrokeBase::joinPropertyKey: object->as<StrokeBase>()->join(value); break;
+            case StrokeBase::capPropertyKey:
+                object->as<StrokeBase>()->cap(value);
+                break;
+            case StrokeBase::joinPropertyKey:
+                object->as<StrokeBase>()->join(value);
+                break;
             case TrimPathBase::modeValuePropertyKey:
                 object->as<TrimPathBase>()->modeValue(value);
                 break;
-            case FillBase::fillRulePropertyKey: object->as<FillBase>()->fillRule(value); break;
-            case PathBase::pathFlagsPropertyKey: object->as<PathBase>()->pathFlags(value); break;
+            case FillBase::fillRulePropertyKey:
+                object->as<FillBase>()->fillRule(value);
+                break;
+            case PathBase::pathFlagsPropertyKey:
+                object->as<PathBase>()->pathFlags(value);
+                break;
             case ClippingShapeBase::sourceIdPropertyKey:
                 object->as<ClippingShapeBase>()->sourceId(value);
                 break;
             case ClippingShapeBase::fillRulePropertyKey:
                 object->as<ClippingShapeBase>()->fillRule(value);
                 break;
-            case PolygonBase::pointsPropertyKey: object->as<PolygonBase>()->points(value); break;
-            case ImageBase::assetIdPropertyKey: object->as<ImageBase>()->assetId(value); break;
+            case PolygonBase::pointsPropertyKey:
+                object->as<PolygonBase>()->points(value);
+                break;
+            case ImageBase::assetIdPropertyKey:
+                object->as<ImageBase>()->assetId(value);
+                break;
             case DrawRulesBase::drawTargetIdPropertyKey:
                 object->as<DrawRulesBase>()->drawTargetId(value);
                 break;
             case ArtboardBase::defaultStateMachineIdPropertyKey:
                 object->as<ArtboardBase>()->defaultStateMachineId(value);
                 break;
-            case WeightBase::valuesPropertyKey: object->as<WeightBase>()->values(value); break;
-            case WeightBase::indicesPropertyKey: object->as<WeightBase>()->indices(value); break;
-            case TendonBase::boneIdPropertyKey: object->as<TendonBase>()->boneId(value); break;
+            case WeightBase::valuesPropertyKey:
+                object->as<WeightBase>()->values(value);
+                break;
+            case WeightBase::indicesPropertyKey:
+                object->as<WeightBase>()->indices(value);
+                break;
+            case TendonBase::boneIdPropertyKey:
+                object->as<TendonBase>()->boneId(value);
+                break;
             case CubicWeightBase::inValuesPropertyKey:
                 object->as<CubicWeightBase>()->inValues(value);
                 break;
@@ -380,8 +496,10 @@
                 break;
         }
     }
-    static void setDouble(Core* object, int propertyKey, float value) {
-        switch (propertyKey) {
+    static void setDouble(Core* object, int propertyKey, float value)
+    {
+        switch (propertyKey)
+        {
             case ConstraintBase::strengthPropertyKey:
                 object->as<ConstraintBase>()->strength(value);
                 break;
@@ -418,8 +536,12 @@
             case TransformComponentBase::scaleYPropertyKey:
                 object->as<TransformComponentBase>()->scaleY(value);
                 break;
-            case NodeBase::xPropertyKey: object->as<NodeBase>()->x(value); break;
-            case NodeBase::yPropertyKey: object->as<NodeBase>()->y(value); break;
+            case NodeBase::xPropertyKey:
+                object->as<NodeBase>()->x(value);
+                break;
+            case NodeBase::yPropertyKey:
+                object->as<NodeBase>()->y(value);
+                break;
             case NestedLinearAnimationBase::mixPropertyKey:
                 object->as<NestedLinearAnimationBase>()->mix(value);
                 break;
@@ -483,13 +605,27 @@
             case GradientStopBase::positionPropertyKey:
                 object->as<GradientStopBase>()->position(value);
                 break;
-            case TrimPathBase::startPropertyKey: object->as<TrimPathBase>()->start(value); break;
-            case TrimPathBase::endPropertyKey: object->as<TrimPathBase>()->end(value); break;
-            case TrimPathBase::offsetPropertyKey: object->as<TrimPathBase>()->offset(value); break;
-            case VertexBase::xPropertyKey: object->as<VertexBase>()->x(value); break;
-            case VertexBase::yPropertyKey: object->as<VertexBase>()->y(value); break;
-            case MeshVertexBase::uPropertyKey: object->as<MeshVertexBase>()->u(value); break;
-            case MeshVertexBase::vPropertyKey: object->as<MeshVertexBase>()->v(value); break;
+            case TrimPathBase::startPropertyKey:
+                object->as<TrimPathBase>()->start(value);
+                break;
+            case TrimPathBase::endPropertyKey:
+                object->as<TrimPathBase>()->end(value);
+                break;
+            case TrimPathBase::offsetPropertyKey:
+                object->as<TrimPathBase>()->offset(value);
+                break;
+            case VertexBase::xPropertyKey:
+                object->as<VertexBase>()->x(value);
+                break;
+            case VertexBase::yPropertyKey:
+                object->as<VertexBase>()->y(value);
+                break;
+            case MeshVertexBase::uPropertyKey:
+                object->as<MeshVertexBase>()->u(value);
+                break;
+            case MeshVertexBase::vPropertyKey:
+                object->as<MeshVertexBase>()->v(value);
+                break;
             case StraightVertexBase::radiusPropertyKey:
                 object->as<StraightVertexBase>()->radius(value);
                 break;
@@ -550,31 +686,69 @@
             case CubicDetachedVertexBase::outDistancePropertyKey:
                 object->as<CubicDetachedVertexBase>()->outDistance(value);
                 break;
-            case ArtboardBase::widthPropertyKey: object->as<ArtboardBase>()->width(value); break;
-            case ArtboardBase::heightPropertyKey: object->as<ArtboardBase>()->height(value); break;
-            case ArtboardBase::xPropertyKey: object->as<ArtboardBase>()->x(value); break;
-            case ArtboardBase::yPropertyKey: object->as<ArtboardBase>()->y(value); break;
+            case ArtboardBase::widthPropertyKey:
+                object->as<ArtboardBase>()->width(value);
+                break;
+            case ArtboardBase::heightPropertyKey:
+                object->as<ArtboardBase>()->height(value);
+                break;
+            case ArtboardBase::xPropertyKey:
+                object->as<ArtboardBase>()->x(value);
+                break;
+            case ArtboardBase::yPropertyKey:
+                object->as<ArtboardBase>()->y(value);
+                break;
             case ArtboardBase::originXPropertyKey:
                 object->as<ArtboardBase>()->originX(value);
                 break;
             case ArtboardBase::originYPropertyKey:
                 object->as<ArtboardBase>()->originY(value);
                 break;
-            case BoneBase::lengthPropertyKey: object->as<BoneBase>()->length(value); break;
-            case RootBoneBase::xPropertyKey: object->as<RootBoneBase>()->x(value); break;
-            case RootBoneBase::yPropertyKey: object->as<RootBoneBase>()->y(value); break;
-            case SkinBase::xxPropertyKey: object->as<SkinBase>()->xx(value); break;
-            case SkinBase::yxPropertyKey: object->as<SkinBase>()->yx(value); break;
-            case SkinBase::xyPropertyKey: object->as<SkinBase>()->xy(value); break;
-            case SkinBase::yyPropertyKey: object->as<SkinBase>()->yy(value); break;
-            case SkinBase::txPropertyKey: object->as<SkinBase>()->tx(value); break;
-            case SkinBase::tyPropertyKey: object->as<SkinBase>()->ty(value); break;
-            case TendonBase::xxPropertyKey: object->as<TendonBase>()->xx(value); break;
-            case TendonBase::yxPropertyKey: object->as<TendonBase>()->yx(value); break;
-            case TendonBase::xyPropertyKey: object->as<TendonBase>()->xy(value); break;
-            case TendonBase::yyPropertyKey: object->as<TendonBase>()->yy(value); break;
-            case TendonBase::txPropertyKey: object->as<TendonBase>()->tx(value); break;
-            case TendonBase::tyPropertyKey: object->as<TendonBase>()->ty(value); break;
+            case BoneBase::lengthPropertyKey:
+                object->as<BoneBase>()->length(value);
+                break;
+            case RootBoneBase::xPropertyKey:
+                object->as<RootBoneBase>()->x(value);
+                break;
+            case RootBoneBase::yPropertyKey:
+                object->as<RootBoneBase>()->y(value);
+                break;
+            case SkinBase::xxPropertyKey:
+                object->as<SkinBase>()->xx(value);
+                break;
+            case SkinBase::yxPropertyKey:
+                object->as<SkinBase>()->yx(value);
+                break;
+            case SkinBase::xyPropertyKey:
+                object->as<SkinBase>()->xy(value);
+                break;
+            case SkinBase::yyPropertyKey:
+                object->as<SkinBase>()->yy(value);
+                break;
+            case SkinBase::txPropertyKey:
+                object->as<SkinBase>()->tx(value);
+                break;
+            case SkinBase::tyPropertyKey:
+                object->as<SkinBase>()->ty(value);
+                break;
+            case TendonBase::xxPropertyKey:
+                object->as<TendonBase>()->xx(value);
+                break;
+            case TendonBase::yxPropertyKey:
+                object->as<TendonBase>()->yx(value);
+                break;
+            case TendonBase::xyPropertyKey:
+                object->as<TendonBase>()->xy(value);
+                break;
+            case TendonBase::yyPropertyKey:
+                object->as<TendonBase>()->yy(value);
+                break;
+            case TendonBase::txPropertyKey:
+                object->as<TendonBase>()->tx(value);
+                break;
+            case TendonBase::tyPropertyKey:
+                object->as<TendonBase>()->ty(value);
+                break;
             case DrawableAssetBase::heightPropertyKey:
                 object->as<DrawableAssetBase>()->height(value);
                 break;
@@ -583,8 +757,10 @@
                 break;
         }
     }
-    static void setBool(Core* object, int propertyKey, bool value) {
-        switch (propertyKey) {
+    static void setBool(Core* object, int propertyKey, bool value)
+    {
+        switch (propertyKey)
+        {
             case TransformComponentConstraintBase::offsetPropertyKey:
                 object->as<TransformComponentConstraintBase>()->offset(value);
                 break;
@@ -639,11 +815,15 @@
             case ClippingShapeBase::isVisiblePropertyKey:
                 object->as<ClippingShapeBase>()->isVisible(value);
                 break;
-            case ArtboardBase::clipPropertyKey: object->as<ArtboardBase>()->clip(value); break;
+            case ArtboardBase::clipPropertyKey:
+                object->as<ArtboardBase>()->clip(value);
+                break;
         }
     }
-    static void setColor(Core* object, int propertyKey, int value) {
-        switch (propertyKey) {
+    static void setColor(Core* object, int propertyKey, int value)
+    {
+        switch (propertyKey)
+        {
             case KeyFrameColorBase::valuePropertyKey:
                 object->as<KeyFrameColorBase>()->value(value);
                 break;
@@ -655,19 +835,27 @@
                 break;
         }
     }
-    static std::string getString(Core* object, int propertyKey) {
-        switch (propertyKey) {
-            case ComponentBase::namePropertyKey: return object->as<ComponentBase>()->name();
+    static std::string getString(Core* object, int propertyKey)
+    {
+        switch (propertyKey)
+        {
+            case ComponentBase::namePropertyKey:
+                return object->as<ComponentBase>()->name();
             case StateMachineComponentBase::namePropertyKey:
                 return object->as<StateMachineComponentBase>()->name();
-            case AnimationBase::namePropertyKey: return object->as<AnimationBase>()->name();
-            case AssetBase::namePropertyKey: return object->as<AssetBase>()->name();
+            case AnimationBase::namePropertyKey:
+                return object->as<AnimationBase>()->name();
+            case AssetBase::namePropertyKey:
+                return object->as<AssetBase>()->name();
         }
         return "";
     }
-    static uint32_t getUint(Core* object, int propertyKey) {
-        switch (propertyKey) {
-            case ComponentBase::parentIdPropertyKey: return object->as<ComponentBase>()->parentId();
+    static uint32_t getUint(Core* object, int propertyKey)
+    {
+        switch (propertyKey)
+        {
+            case ComponentBase::parentIdPropertyKey:
+                return object->as<ComponentBase>()->parentId();
             case DrawTargetBase::drawableIdPropertyKey:
                 return object->as<DrawTargetBase>()->drawableId();
             case DrawTargetBase::placementValuePropertyKey:
@@ -712,12 +900,14 @@
                 return object->as<StateMachineListenerBase>()->targetId();
             case StateMachineListenerBase::listenerTypeValuePropertyKey:
                 return object->as<StateMachineListenerBase>()->listenerTypeValue();
-            case KeyFrameBase::framePropertyKey: return object->as<KeyFrameBase>()->frame();
+            case KeyFrameBase::framePropertyKey:
+                return object->as<KeyFrameBase>()->frame();
             case KeyFrameBase::interpolationTypePropertyKey:
                 return object->as<KeyFrameBase>()->interpolationType();
             case KeyFrameBase::interpolatorIdPropertyKey:
                 return object->as<KeyFrameBase>()->interpolatorId();
-            case KeyFrameIdBase::valuePropertyKey: return object->as<KeyFrameIdBase>()->value();
+            case KeyFrameIdBase::valuePropertyKey:
+                return object->as<KeyFrameIdBase>()->value();
             case ListenerBoolChangeBase::valuePropertyKey:
                 return object->as<ListenerBoolChangeBase>()->value();
             case ListenerAlignTargetBase::targetIdPropertyKey:
@@ -746,24 +936,34 @@
                 return object->as<BlendState1DBase>()->inputId();
             case BlendStateTransitionBase::exitBlendAnimationIdPropertyKey:
                 return object->as<BlendStateTransitionBase>()->exitBlendAnimationId();
-            case StrokeBase::capPropertyKey: return object->as<StrokeBase>()->cap();
-            case StrokeBase::joinPropertyKey: return object->as<StrokeBase>()->join();
-            case TrimPathBase::modeValuePropertyKey: return object->as<TrimPathBase>()->modeValue();
-            case FillBase::fillRulePropertyKey: return object->as<FillBase>()->fillRule();
-            case PathBase::pathFlagsPropertyKey: return object->as<PathBase>()->pathFlags();
+            case StrokeBase::capPropertyKey:
+                return object->as<StrokeBase>()->cap();
+            case StrokeBase::joinPropertyKey:
+                return object->as<StrokeBase>()->join();
+            case TrimPathBase::modeValuePropertyKey:
+                return object->as<TrimPathBase>()->modeValue();
+            case FillBase::fillRulePropertyKey:
+                return object->as<FillBase>()->fillRule();
+            case PathBase::pathFlagsPropertyKey:
+                return object->as<PathBase>()->pathFlags();
             case ClippingShapeBase::sourceIdPropertyKey:
                 return object->as<ClippingShapeBase>()->sourceId();
             case ClippingShapeBase::fillRulePropertyKey:
                 return object->as<ClippingShapeBase>()->fillRule();
-            case PolygonBase::pointsPropertyKey: return object->as<PolygonBase>()->points();
-            case ImageBase::assetIdPropertyKey: return object->as<ImageBase>()->assetId();
+            case PolygonBase::pointsPropertyKey:
+                return object->as<PolygonBase>()->points();
+            case ImageBase::assetIdPropertyKey:
+                return object->as<ImageBase>()->assetId();
             case DrawRulesBase::drawTargetIdPropertyKey:
                 return object->as<DrawRulesBase>()->drawTargetId();
             case ArtboardBase::defaultStateMachineIdPropertyKey:
                 return object->as<ArtboardBase>()->defaultStateMachineId();
-            case WeightBase::valuesPropertyKey: return object->as<WeightBase>()->values();
-            case WeightBase::indicesPropertyKey: return object->as<WeightBase>()->indices();
-            case TendonBase::boneIdPropertyKey: return object->as<TendonBase>()->boneId();
+            case WeightBase::valuesPropertyKey:
+                return object->as<WeightBase>()->values();
+            case WeightBase::indicesPropertyKey:
+                return object->as<WeightBase>()->indices();
+            case TendonBase::boneIdPropertyKey:
+                return object->as<TendonBase>()->boneId();
             case CubicWeightBase::inValuesPropertyKey:
                 return object->as<CubicWeightBase>()->inValues();
             case CubicWeightBase::inIndicesPropertyKey:
@@ -772,12 +972,15 @@
                 return object->as<CubicWeightBase>()->outValues();
             case CubicWeightBase::outIndicesPropertyKey:
                 return object->as<CubicWeightBase>()->outIndices();
-            case FileAssetBase::assetIdPropertyKey: return object->as<FileAssetBase>()->assetId();
+            case FileAssetBase::assetIdPropertyKey:
+                return object->as<FileAssetBase>()->assetId();
         }
         return 0;
     }
-    static float getDouble(Core* object, int propertyKey) {
-        switch (propertyKey) {
+    static float getDouble(Core* object, int propertyKey)
+    {
+        switch (propertyKey)
+        {
             case ConstraintBase::strengthPropertyKey:
                 return object->as<ConstraintBase>()->strength();
             case DistanceConstraintBase::distancePropertyKey:
@@ -802,8 +1005,10 @@
                 return object->as<TransformComponentBase>()->scaleX();
             case TransformComponentBase::scaleYPropertyKey:
                 return object->as<TransformComponentBase>()->scaleY();
-            case NodeBase::xPropertyKey: return object->as<NodeBase>()->x();
-            case NodeBase::yPropertyKey: return object->as<NodeBase>()->y();
+            case NodeBase::xPropertyKey:
+                return object->as<NodeBase>()->x();
+            case NodeBase::yPropertyKey:
+                return object->as<NodeBase>()->y();
             case NestedLinearAnimationBase::mixPropertyKey:
                 return object->as<NestedLinearAnimationBase>()->mix();
             case NestedSimpleAnimationBase::speedPropertyKey:
@@ -842,16 +1047,24 @@
                 return object->as<LinearGradientBase>()->endY();
             case LinearGradientBase::opacityPropertyKey:
                 return object->as<LinearGradientBase>()->opacity();
-            case StrokeBase::thicknessPropertyKey: return object->as<StrokeBase>()->thickness();
+            case StrokeBase::thicknessPropertyKey:
+                return object->as<StrokeBase>()->thickness();
             case GradientStopBase::positionPropertyKey:
                 return object->as<GradientStopBase>()->position();
-            case TrimPathBase::startPropertyKey: return object->as<TrimPathBase>()->start();
-            case TrimPathBase::endPropertyKey: return object->as<TrimPathBase>()->end();
-            case TrimPathBase::offsetPropertyKey: return object->as<TrimPathBase>()->offset();
-            case VertexBase::xPropertyKey: return object->as<VertexBase>()->x();
-            case VertexBase::yPropertyKey: return object->as<VertexBase>()->y();
-            case MeshVertexBase::uPropertyKey: return object->as<MeshVertexBase>()->u();
-            case MeshVertexBase::vPropertyKey: return object->as<MeshVertexBase>()->v();
+            case TrimPathBase::startPropertyKey:
+                return object->as<TrimPathBase>()->start();
+            case TrimPathBase::endPropertyKey:
+                return object->as<TrimPathBase>()->end();
+            case TrimPathBase::offsetPropertyKey:
+                return object->as<TrimPathBase>()->offset();
+            case VertexBase::xPropertyKey:
+                return object->as<VertexBase>()->x();
+            case VertexBase::yPropertyKey:
+                return object->as<VertexBase>()->y();
+            case MeshVertexBase::uPropertyKey:
+                return object->as<MeshVertexBase>()->u();
+            case MeshVertexBase::vPropertyKey:
+                return object->as<MeshVertexBase>()->v();
             case StraightVertexBase::radiusPropertyKey:
                 return object->as<StraightVertexBase>()->radius();
             case CubicAsymmetricVertexBase::rotationPropertyKey:
@@ -882,7 +1095,8 @@
                 return object->as<CubicMirroredVertexBase>()->distance();
             case PolygonBase::cornerRadiusPropertyKey:
                 return object->as<PolygonBase>()->cornerRadius();
-            case StarBase::innerRadiusPropertyKey: return object->as<StarBase>()->innerRadius();
+            case StarBase::innerRadiusPropertyKey:
+                return object->as<StarBase>()->innerRadius();
             case CubicDetachedVertexBase::inRotationPropertyKey:
                 return object->as<CubicDetachedVertexBase>()->inRotation();
             case CubicDetachedVertexBase::inDistancePropertyKey:
@@ -891,27 +1105,48 @@
                 return object->as<CubicDetachedVertexBase>()->outRotation();
             case CubicDetachedVertexBase::outDistancePropertyKey:
                 return object->as<CubicDetachedVertexBase>()->outDistance();
-            case ArtboardBase::widthPropertyKey: return object->as<ArtboardBase>()->width();
-            case ArtboardBase::heightPropertyKey: return object->as<ArtboardBase>()->height();
-            case ArtboardBase::xPropertyKey: return object->as<ArtboardBase>()->x();
-            case ArtboardBase::yPropertyKey: return object->as<ArtboardBase>()->y();
-            case ArtboardBase::originXPropertyKey: return object->as<ArtboardBase>()->originX();
-            case ArtboardBase::originYPropertyKey: return object->as<ArtboardBase>()->originY();
-            case BoneBase::lengthPropertyKey: return object->as<BoneBase>()->length();
-            case RootBoneBase::xPropertyKey: return object->as<RootBoneBase>()->x();
-            case RootBoneBase::yPropertyKey: return object->as<RootBoneBase>()->y();
-            case SkinBase::xxPropertyKey: return object->as<SkinBase>()->xx();
-            case SkinBase::yxPropertyKey: return object->as<SkinBase>()->yx();
-            case SkinBase::xyPropertyKey: return object->as<SkinBase>()->xy();
-            case SkinBase::yyPropertyKey: return object->as<SkinBase>()->yy();
-            case SkinBase::txPropertyKey: return object->as<SkinBase>()->tx();
-            case SkinBase::tyPropertyKey: return object->as<SkinBase>()->ty();
-            case TendonBase::xxPropertyKey: return object->as<TendonBase>()->xx();
-            case TendonBase::yxPropertyKey: return object->as<TendonBase>()->yx();
-            case TendonBase::xyPropertyKey: return object->as<TendonBase>()->xy();
-            case TendonBase::yyPropertyKey: return object->as<TendonBase>()->yy();
-            case TendonBase::txPropertyKey: return object->as<TendonBase>()->tx();
-            case TendonBase::tyPropertyKey: return object->as<TendonBase>()->ty();
+            case ArtboardBase::widthPropertyKey:
+                return object->as<ArtboardBase>()->width();
+            case ArtboardBase::heightPropertyKey:
+                return object->as<ArtboardBase>()->height();
+            case ArtboardBase::xPropertyKey:
+                return object->as<ArtboardBase>()->x();
+            case ArtboardBase::yPropertyKey:
+                return object->as<ArtboardBase>()->y();
+            case ArtboardBase::originXPropertyKey:
+                return object->as<ArtboardBase>()->originX();
+            case ArtboardBase::originYPropertyKey:
+                return object->as<ArtboardBase>()->originY();
+            case BoneBase::lengthPropertyKey:
+                return object->as<BoneBase>()->length();
+            case RootBoneBase::xPropertyKey:
+                return object->as<RootBoneBase>()->x();
+            case RootBoneBase::yPropertyKey:
+                return object->as<RootBoneBase>()->y();
+            case SkinBase::xxPropertyKey:
+                return object->as<SkinBase>()->xx();
+            case SkinBase::yxPropertyKey:
+                return object->as<SkinBase>()->yx();
+            case SkinBase::xyPropertyKey:
+                return object->as<SkinBase>()->xy();
+            case SkinBase::yyPropertyKey:
+                return object->as<SkinBase>()->yy();
+            case SkinBase::txPropertyKey:
+                return object->as<SkinBase>()->tx();
+            case SkinBase::tyPropertyKey:
+                return object->as<SkinBase>()->ty();
+            case TendonBase::xxPropertyKey:
+                return object->as<TendonBase>()->xx();
+            case TendonBase::yxPropertyKey:
+                return object->as<TendonBase>()->yx();
+            case TendonBase::xyPropertyKey:
+                return object->as<TendonBase>()->xy();
+            case TendonBase::yyPropertyKey:
+                return object->as<TendonBase>()->yy();
+            case TendonBase::txPropertyKey:
+                return object->as<TendonBase>()->tx();
+            case TendonBase::tyPropertyKey:
+                return object->as<TendonBase>()->ty();
             case DrawableAssetBase::heightPropertyKey:
                 return object->as<DrawableAssetBase>()->height();
             case DrawableAssetBase::widthPropertyKey:
@@ -919,8 +1154,10 @@
         }
         return 0.0f;
     }
-    static bool getBool(Core* object, int propertyKey) {
-        switch (propertyKey) {
+    static bool getBool(Core* object, int propertyKey)
+    {
+        switch (propertyKey)
+        {
             case TransformComponentConstraintBase::offsetPropertyKey:
                 return object->as<TransformComponentConstraintBase>()->offset();
             case TransformComponentConstraintBase::doesCopyPropertyKey:
@@ -939,7 +1176,8 @@
                 return object->as<IKConstraintBase>()->invertDirection();
             case NestedSimpleAnimationBase::isPlayingPropertyKey:
                 return object->as<NestedSimpleAnimationBase>()->isPlaying();
-            case KeyFrameBoolBase::valuePropertyKey: return object->as<KeyFrameBoolBase>()->value();
+            case KeyFrameBoolBase::valuePropertyKey:
+                return object->as<KeyFrameBoolBase>()->value();
             case NestedBoolBase::nestedValuePropertyKey:
                 return object->as<NestedBoolBase>()->nestedValue();
             case LinearAnimationBase::enableWorkAreaPropertyKey:
@@ -956,12 +1194,15 @@
                 return object->as<RectangleBase>()->linkCornerRadius();
             case ClippingShapeBase::isVisiblePropertyKey:
                 return object->as<ClippingShapeBase>()->isVisible();
-            case ArtboardBase::clipPropertyKey: return object->as<ArtboardBase>()->clip();
+            case ArtboardBase::clipPropertyKey:
+                return object->as<ArtboardBase>()->clip();
         }
         return false;
     }
-    static int getColor(Core* object, int propertyKey) {
-        switch (propertyKey) {
+    static int getColor(Core* object, int propertyKey)
+    {
+        switch (propertyKey)
+        {
             case KeyFrameColorBase::valuePropertyKey:
                 return object->as<KeyFrameColorBase>()->value();
             case SolidColorBase::colorValuePropertyKey:
@@ -971,12 +1212,15 @@
         }
         return 0;
     }
-    static int propertyFieldId(int propertyKey) {
-        switch (propertyKey) {
+    static int propertyFieldId(int propertyKey)
+    {
+        switch (propertyKey)
+        {
             case ComponentBase::namePropertyKey:
             case StateMachineComponentBase::namePropertyKey:
             case AnimationBase::namePropertyKey:
-            case AssetBase::namePropertyKey: return CoreStringType::id;
+            case AssetBase::namePropertyKey:
+                return CoreStringType::id;
             case ComponentBase::parentIdPropertyKey:
             case DrawTargetBase::drawableIdPropertyKey:
             case DrawTargetBase::placementValuePropertyKey:
@@ -1036,7 +1280,8 @@
             case CubicWeightBase::inIndicesPropertyKey:
             case CubicWeightBase::outValuesPropertyKey:
             case CubicWeightBase::outIndicesPropertyKey:
-            case FileAssetBase::assetIdPropertyKey: return CoreUintType::id;
+            case FileAssetBase::assetIdPropertyKey:
+                return CoreUintType::id;
             case ConstraintBase::strengthPropertyKey:
             case DistanceConstraintBase::distancePropertyKey:
             case TransformComponentConstraintBase::copyFactorPropertyKey:
@@ -1121,7 +1366,8 @@
             case TendonBase::txPropertyKey:
             case TendonBase::tyPropertyKey:
             case DrawableAssetBase::heightPropertyKey:
-            case DrawableAssetBase::widthPropertyKey: return CoreDoubleType::id;
+            case DrawableAssetBase::widthPropertyKey:
+                return CoreDoubleType::id;
             case TransformComponentConstraintBase::offsetPropertyKey:
             case TransformComponentConstraintBase::doesCopyPropertyKey:
             case TransformComponentConstraintBase::minPropertyKey:
@@ -1140,13 +1386,17 @@
             case PointsPathBase::isClosedPropertyKey:
             case RectangleBase::linkCornerRadiusPropertyKey:
             case ClippingShapeBase::isVisiblePropertyKey:
-            case ArtboardBase::clipPropertyKey: return CoreBoolType::id;
+            case ArtboardBase::clipPropertyKey:
+                return CoreBoolType::id;
             case KeyFrameColorBase::valuePropertyKey:
             case SolidColorBase::colorValuePropertyKey:
-            case GradientStopBase::colorValuePropertyKey: return CoreColorType::id;
+            case GradientStopBase::colorValuePropertyKey:
+                return CoreColorType::id;
             case MeshBase::triangleIndexBytesPropertyKey:
-            case FileAssetContentsBase::bytesPropertyKey: return CoreBytesType::id;
-            default: return -1;
+            case FileAssetContentsBase::bytesPropertyKey:
+                return CoreBytesType::id;
+            default:
+                return -1;
         }
     }
 };
diff --git a/include/rive/generated/draw_rules_base.hpp b/include/rive/generated/draw_rules_base.hpp
index afada41..75b9cfd 100644
--- a/include/rive/generated/draw_rules_base.hpp
+++ b/include/rive/generated/draw_rules_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_DRAW_RULES_BASE_HPP_
 #include "rive/container_component.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class DrawRulesBase : public ContainerComponent {
+namespace rive
+{
+class DrawRulesBase : public ContainerComponent
+{
 protected:
     typedef ContainerComponent Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case DrawRulesBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,8 +36,10 @@
 
 public:
     inline uint32_t drawTargetId() const { return m_DrawTargetId; }
-    void drawTargetId(uint32_t value) {
-        if (m_DrawTargetId == value) {
+    void drawTargetId(uint32_t value)
+    {
+        if (m_DrawTargetId == value)
+        {
             return;
         }
         m_DrawTargetId = value;
@@ -39,13 +47,16 @@
     }
 
     Core* clone() const override;
-    void copy(const DrawRulesBase& object) {
+    void copy(const DrawRulesBase& object)
+    {
         m_DrawTargetId = object.m_DrawTargetId;
         ContainerComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case drawTargetIdPropertyKey:
                 m_DrawTargetId = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/draw_target_base.hpp b/include/rive/generated/draw_target_base.hpp
index cee9d2c..0bc6ea4 100644
--- a/include/rive/generated/draw_target_base.hpp
+++ b/include/rive/generated/draw_target_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_DRAW_TARGET_BASE_HPP_
 #include "rive/component.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class DrawTargetBase : public Component {
+namespace rive
+{
+class DrawTargetBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case DrawTargetBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -31,8 +37,10 @@
 
 public:
     inline uint32_t drawableId() const { return m_DrawableId; }
-    void drawableId(uint32_t value) {
-        if (m_DrawableId == value) {
+    void drawableId(uint32_t value)
+    {
+        if (m_DrawableId == value)
+        {
             return;
         }
         m_DrawableId = value;
@@ -40,8 +48,10 @@
     }
 
     inline uint32_t placementValue() const { return m_PlacementValue; }
-    void placementValue(uint32_t value) {
-        if (m_PlacementValue == value) {
+    void placementValue(uint32_t value)
+    {
+        if (m_PlacementValue == value)
+        {
             return;
         }
         m_PlacementValue = value;
@@ -49,14 +59,17 @@
     }
 
     Core* clone() const override;
-    void copy(const DrawTargetBase& object) {
+    void copy(const DrawTargetBase& object)
+    {
         m_DrawableId = object.m_DrawableId;
         m_PlacementValue = object.m_PlacementValue;
         Component::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case drawableIdPropertyKey:
                 m_DrawableId = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/drawable_base.hpp b/include/rive/generated/drawable_base.hpp
index e5e8f03..0d617f5 100644
--- a/include/rive/generated/drawable_base.hpp
+++ b/include/rive/generated/drawable_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_DRAWABLE_BASE_HPP_
 #include "rive/core/field_types/core_uint_type.hpp"
 #include "rive/node.hpp"
-namespace rive {
-class DrawableBase : public Node {
+namespace rive
+{
+class DrawableBase : public Node
+{
 protected:
     typedef Node Super;
 
@@ -12,15 +14,19 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case DrawableBase::typeKey:
             case NodeBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -35,8 +41,10 @@
 
 public:
     inline uint32_t blendModeValue() const { return m_BlendModeValue; }
-    void blendModeValue(uint32_t value) {
-        if (m_BlendModeValue == value) {
+    void blendModeValue(uint32_t value)
+    {
+        if (m_BlendModeValue == value)
+        {
             return;
         }
         m_BlendModeValue = value;
@@ -44,22 +52,27 @@
     }
 
     inline uint32_t drawableFlags() const { return m_DrawableFlags; }
-    void drawableFlags(uint32_t value) {
-        if (m_DrawableFlags == value) {
+    void drawableFlags(uint32_t value)
+    {
+        if (m_DrawableFlags == value)
+        {
             return;
         }
         m_DrawableFlags = value;
         drawableFlagsChanged();
     }
 
-    void copy(const DrawableBase& object) {
+    void copy(const DrawableBase& object)
+    {
         m_BlendModeValue = object.m_BlendModeValue;
         m_DrawableFlags = object.m_DrawableFlags;
         Node::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case blendModeValuePropertyKey:
                 m_BlendModeValue = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/nested_animation_base.hpp b/include/rive/generated/nested_animation_base.hpp
index 2277f9d..74ff2d7 100644
--- a/include/rive/generated/nested_animation_base.hpp
+++ b/include/rive/generated/nested_animation_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_ANIMATION_BASE_HPP_
 #include "rive/container_component.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class NestedAnimationBase : public ContainerComponent {
+namespace rive
+{
+class NestedAnimationBase : public ContainerComponent
+{
 protected:
     typedef ContainerComponent Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedAnimationBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,21 +36,26 @@
 
 public:
     inline uint32_t animationId() const { return m_AnimationId; }
-    void animationId(uint32_t value) {
-        if (m_AnimationId == value) {
+    void animationId(uint32_t value)
+    {
+        if (m_AnimationId == value)
+        {
             return;
         }
         m_AnimationId = value;
         animationIdChanged();
     }
 
-    void copy(const NestedAnimationBase& object) {
+    void copy(const NestedAnimationBase& object)
+    {
         m_AnimationId = object.m_AnimationId;
         ContainerComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case animationIdPropertyKey:
                 m_AnimationId = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/nested_artboard_base.hpp b/include/rive/generated/nested_artboard_base.hpp
index 06e7152..ce5d874 100644
--- a/include/rive/generated/nested_artboard_base.hpp
+++ b/include/rive/generated/nested_artboard_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NESTED_ARTBOARD_BASE_HPP_
 #include "rive/core/field_types/core_uint_type.hpp"
 #include "rive/drawable.hpp"
-namespace rive {
-class NestedArtboardBase : public Drawable {
+namespace rive
+{
+class NestedArtboardBase : public Drawable
+{
 protected:
     typedef Drawable Super;
 
@@ -12,16 +14,20 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NestedArtboardBase::typeKey:
             case DrawableBase::typeKey:
             case NodeBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -34,8 +40,10 @@
 
 public:
     inline uint32_t artboardId() const { return m_ArtboardId; }
-    void artboardId(uint32_t value) {
-        if (m_ArtboardId == value) {
+    void artboardId(uint32_t value)
+    {
+        if (m_ArtboardId == value)
+        {
             return;
         }
         m_ArtboardId = value;
@@ -43,13 +51,16 @@
     }
 
     Core* clone() const override;
-    void copy(const NestedArtboardBase& object) {
+    void copy(const NestedArtboardBase& object)
+    {
         m_ArtboardId = object.m_ArtboardId;
         Drawable::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case artboardIdPropertyKey:
                 m_ArtboardId = CoreUintType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/node_base.hpp b/include/rive/generated/node_base.hpp
index a9db1b5..f27da20 100644
--- a/include/rive/generated/node_base.hpp
+++ b/include/rive/generated/node_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_NODE_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/transform_component.hpp"
-namespace rive {
-class NodeBase : public TransformComponent {
+namespace rive
+{
+class NodeBase : public TransformComponent
+{
 protected:
     typedef TransformComponent Super;
 
@@ -12,14 +14,18 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case NodeBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -34,8 +40,10 @@
 
 public:
     inline float x() const override { return m_X; }
-    void x(float value) {
-        if (m_X == value) {
+    void x(float value)
+    {
+        if (m_X == value)
+        {
             return;
         }
         m_X = value;
@@ -43,8 +51,10 @@
     }
 
     inline float y() const override { return m_Y; }
-    void y(float value) {
-        if (m_Y == value) {
+    void y(float value)
+    {
+        if (m_Y == value)
+        {
             return;
         }
         m_Y = value;
@@ -52,16 +62,23 @@
     }
 
     Core* clone() const override;
-    void copy(const NodeBase& object) {
+    void copy(const NodeBase& object)
+    {
         m_X = object.m_X;
         m_Y = object.m_Y;
         TransformComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case xPropertyKey: m_X = CoreDoubleType::deserialize(reader); return true;
-            case yPropertyKey: m_Y = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case xPropertyKey:
+                m_X = CoreDoubleType::deserialize(reader);
+                return true;
+            case yPropertyKey:
+                m_Y = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return TransformComponent::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/clipping_shape_base.hpp b/include/rive/generated/shapes/clipping_shape_base.hpp
index 282b6d7..0f9a4c5 100644
--- a/include/rive/generated/shapes/clipping_shape_base.hpp
+++ b/include/rive/generated/shapes/clipping_shape_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/component.hpp"
 #include "rive/core/field_types/core_bool_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class ClippingShapeBase : public Component {
+namespace rive
+{
+class ClippingShapeBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -13,11 +15,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ClippingShapeBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -34,8 +40,10 @@
 
 public:
     inline uint32_t sourceId() const { return m_SourceId; }
-    void sourceId(uint32_t value) {
-        if (m_SourceId == value) {
+    void sourceId(uint32_t value)
+    {
+        if (m_SourceId == value)
+        {
             return;
         }
         m_SourceId = value;
@@ -43,8 +51,10 @@
     }
 
     inline uint32_t fillRule() const { return m_FillRule; }
-    void fillRule(uint32_t value) {
-        if (m_FillRule == value) {
+    void fillRule(uint32_t value)
+    {
+        if (m_FillRule == value)
+        {
             return;
         }
         m_FillRule = value;
@@ -52,8 +62,10 @@
     }
 
     inline bool isVisible() const { return m_IsVisible; }
-    void isVisible(bool value) {
-        if (m_IsVisible == value) {
+    void isVisible(bool value)
+    {
+        if (m_IsVisible == value)
+        {
             return;
         }
         m_IsVisible = value;
@@ -61,18 +73,27 @@
     }
 
     Core* clone() const override;
-    void copy(const ClippingShapeBase& object) {
+    void copy(const ClippingShapeBase& object)
+    {
         m_SourceId = object.m_SourceId;
         m_FillRule = object.m_FillRule;
         m_IsVisible = object.m_IsVisible;
         Component::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case sourceIdPropertyKey: m_SourceId = CoreUintType::deserialize(reader); return true;
-            case fillRulePropertyKey: m_FillRule = CoreUintType::deserialize(reader); return true;
-            case isVisiblePropertyKey: m_IsVisible = CoreBoolType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case sourceIdPropertyKey:
+                m_SourceId = CoreUintType::deserialize(reader);
+                return true;
+            case fillRulePropertyKey:
+                m_FillRule = CoreUintType::deserialize(reader);
+                return true;
+            case isVisiblePropertyKey:
+                m_IsVisible = CoreBoolType::deserialize(reader);
+                return true;
         }
         return Component::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/contour_mesh_vertex_base.hpp b/include/rive/generated/shapes/contour_mesh_vertex_base.hpp
index 1cb46cb..c4674b9 100644
--- a/include/rive/generated/shapes/contour_mesh_vertex_base.hpp
+++ b/include/rive/generated/shapes/contour_mesh_vertex_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_CONTOUR_MESH_VERTEX_BASE_HPP_
 #define _RIVE_CONTOUR_MESH_VERTEX_BASE_HPP_
 #include "rive/shapes/mesh_vertex.hpp"
-namespace rive {
-class ContourMeshVertexBase : public MeshVertex {
+namespace rive
+{
+class ContourMeshVertexBase : public MeshVertex
+{
 protected:
     typedef MeshVertex Super;
 
@@ -11,14 +13,18 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ContourMeshVertexBase::typeKey:
             case MeshVertexBase::typeKey:
             case VertexBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/shapes/cubic_asymmetric_vertex_base.hpp b/include/rive/generated/shapes/cubic_asymmetric_vertex_base.hpp
index 14c126f..e9b12cf 100644
--- a/include/rive/generated/shapes/cubic_asymmetric_vertex_base.hpp
+++ b/include/rive/generated/shapes/cubic_asymmetric_vertex_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_CUBIC_ASYMMETRIC_VERTEX_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/shapes/cubic_vertex.hpp"
-namespace rive {
-class CubicAsymmetricVertexBase : public CubicVertex {
+namespace rive
+{
+class CubicAsymmetricVertexBase : public CubicVertex
+{
 protected:
     typedef CubicVertex Super;
 
@@ -12,15 +14,19 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case CubicAsymmetricVertexBase::typeKey:
             case CubicVertexBase::typeKey:
             case PathVertexBase::typeKey:
             case VertexBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -37,8 +43,10 @@
 
 public:
     inline float rotation() const { return m_Rotation; }
-    void rotation(float value) {
-        if (m_Rotation == value) {
+    void rotation(float value)
+    {
+        if (m_Rotation == value)
+        {
             return;
         }
         m_Rotation = value;
@@ -46,8 +54,10 @@
     }
 
     inline float inDistance() const { return m_InDistance; }
-    void inDistance(float value) {
-        if (m_InDistance == value) {
+    void inDistance(float value)
+    {
+        if (m_InDistance == value)
+        {
             return;
         }
         m_InDistance = value;
@@ -55,8 +65,10 @@
     }
 
     inline float outDistance() const { return m_OutDistance; }
-    void outDistance(float value) {
-        if (m_OutDistance == value) {
+    void outDistance(float value)
+    {
+        if (m_OutDistance == value)
+        {
             return;
         }
         m_OutDistance = value;
@@ -64,16 +76,21 @@
     }
 
     Core* clone() const override;
-    void copy(const CubicAsymmetricVertexBase& object) {
+    void copy(const CubicAsymmetricVertexBase& object)
+    {
         m_Rotation = object.m_Rotation;
         m_InDistance = object.m_InDistance;
         m_OutDistance = object.m_OutDistance;
         CubicVertex::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case rotationPropertyKey: m_Rotation = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case rotationPropertyKey:
+                m_Rotation = CoreDoubleType::deserialize(reader);
+                return true;
             case inDistancePropertyKey:
                 m_InDistance = CoreDoubleType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/shapes/cubic_detached_vertex_base.hpp b/include/rive/generated/shapes/cubic_detached_vertex_base.hpp
index 63b406e..cc0feb7 100644
--- a/include/rive/generated/shapes/cubic_detached_vertex_base.hpp
+++ b/include/rive/generated/shapes/cubic_detached_vertex_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_CUBIC_DETACHED_VERTEX_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/shapes/cubic_vertex.hpp"
-namespace rive {
-class CubicDetachedVertexBase : public CubicVertex {
+namespace rive
+{
+class CubicDetachedVertexBase : public CubicVertex
+{
 protected:
     typedef CubicVertex Super;
 
@@ -12,15 +14,19 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case CubicDetachedVertexBase::typeKey:
             case CubicVertexBase::typeKey:
             case PathVertexBase::typeKey:
             case VertexBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -39,8 +45,10 @@
 
 public:
     inline float inRotation() const { return m_InRotation; }
-    void inRotation(float value) {
-        if (m_InRotation == value) {
+    void inRotation(float value)
+    {
+        if (m_InRotation == value)
+        {
             return;
         }
         m_InRotation = value;
@@ -48,8 +56,10 @@
     }
 
     inline float inDistance() const { return m_InDistance; }
-    void inDistance(float value) {
-        if (m_InDistance == value) {
+    void inDistance(float value)
+    {
+        if (m_InDistance == value)
+        {
             return;
         }
         m_InDistance = value;
@@ -57,8 +67,10 @@
     }
 
     inline float outRotation() const { return m_OutRotation; }
-    void outRotation(float value) {
-        if (m_OutRotation == value) {
+    void outRotation(float value)
+    {
+        if (m_OutRotation == value)
+        {
             return;
         }
         m_OutRotation = value;
@@ -66,8 +78,10 @@
     }
 
     inline float outDistance() const { return m_OutDistance; }
-    void outDistance(float value) {
-        if (m_OutDistance == value) {
+    void outDistance(float value)
+    {
+        if (m_OutDistance == value)
+        {
             return;
         }
         m_OutDistance = value;
@@ -75,7 +89,8 @@
     }
 
     Core* clone() const override;
-    void copy(const CubicDetachedVertexBase& object) {
+    void copy(const CubicDetachedVertexBase& object)
+    {
         m_InRotation = object.m_InRotation;
         m_InDistance = object.m_InDistance;
         m_OutRotation = object.m_OutRotation;
@@ -83,8 +98,10 @@
         CubicVertex::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case inRotationPropertyKey:
                 m_InRotation = CoreDoubleType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/shapes/cubic_mirrored_vertex_base.hpp b/include/rive/generated/shapes/cubic_mirrored_vertex_base.hpp
index c019cbd..e419752 100644
--- a/include/rive/generated/shapes/cubic_mirrored_vertex_base.hpp
+++ b/include/rive/generated/shapes/cubic_mirrored_vertex_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_CUBIC_MIRRORED_VERTEX_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/shapes/cubic_vertex.hpp"
-namespace rive {
-class CubicMirroredVertexBase : public CubicVertex {
+namespace rive
+{
+class CubicMirroredVertexBase : public CubicVertex
+{
 protected:
     typedef CubicVertex Super;
 
@@ -12,15 +14,19 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case CubicMirroredVertexBase::typeKey:
             case CubicVertexBase::typeKey:
             case PathVertexBase::typeKey:
             case VertexBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -35,8 +41,10 @@
 
 public:
     inline float rotation() const { return m_Rotation; }
-    void rotation(float value) {
-        if (m_Rotation == value) {
+    void rotation(float value)
+    {
+        if (m_Rotation == value)
+        {
             return;
         }
         m_Rotation = value;
@@ -44,8 +52,10 @@
     }
 
     inline float distance() const { return m_Distance; }
-    void distance(float value) {
-        if (m_Distance == value) {
+    void distance(float value)
+    {
+        if (m_Distance == value)
+        {
             return;
         }
         m_Distance = value;
@@ -53,16 +63,23 @@
     }
 
     Core* clone() const override;
-    void copy(const CubicMirroredVertexBase& object) {
+    void copy(const CubicMirroredVertexBase& object)
+    {
         m_Rotation = object.m_Rotation;
         m_Distance = object.m_Distance;
         CubicVertex::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case rotationPropertyKey: m_Rotation = CoreDoubleType::deserialize(reader); return true;
-            case distancePropertyKey: m_Distance = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case rotationPropertyKey:
+                m_Rotation = CoreDoubleType::deserialize(reader);
+                return true;
+            case distancePropertyKey:
+                m_Distance = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return CubicVertex::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/cubic_vertex_base.hpp b/include/rive/generated/shapes/cubic_vertex_base.hpp
index 96bfe3a..4ac7241 100644
--- a/include/rive/generated/shapes/cubic_vertex_base.hpp
+++ b/include/rive/generated/shapes/cubic_vertex_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_CUBIC_VERTEX_BASE_HPP_
 #define _RIVE_CUBIC_VERTEX_BASE_HPP_
 #include "rive/shapes/path_vertex.hpp"
-namespace rive {
-class CubicVertexBase : public PathVertex {
+namespace rive
+{
+class CubicVertexBase : public PathVertex
+{
 protected:
     typedef PathVertex Super;
 
@@ -11,14 +13,18 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case CubicVertexBase::typeKey:
             case PathVertexBase::typeKey:
             case VertexBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/shapes/ellipse_base.hpp b/include/rive/generated/shapes/ellipse_base.hpp
index b692653..015e763 100644
--- a/include/rive/generated/shapes/ellipse_base.hpp
+++ b/include/rive/generated/shapes/ellipse_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_ELLIPSE_BASE_HPP_
 #define _RIVE_ELLIPSE_BASE_HPP_
 #include "rive/shapes/parametric_path.hpp"
-namespace rive {
-class EllipseBase : public ParametricPath {
+namespace rive
+{
+class EllipseBase : public ParametricPath
+{
 protected:
     typedef ParametricPath Super;
 
@@ -11,8 +13,10 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case EllipseBase::typeKey:
             case ParametricPathBase::typeKey:
             case PathBase::typeKey:
@@ -20,8 +24,10 @@
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/shapes/image_base.hpp b/include/rive/generated/shapes/image_base.hpp
index 3d9a552..ead835e 100644
--- a/include/rive/generated/shapes/image_base.hpp
+++ b/include/rive/generated/shapes/image_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_IMAGE_BASE_HPP_
 #include "rive/core/field_types/core_uint_type.hpp"
 #include "rive/drawable.hpp"
-namespace rive {
-class ImageBase : public Drawable {
+namespace rive
+{
+class ImageBase : public Drawable
+{
 protected:
     typedef Drawable Super;
 
@@ -12,16 +14,20 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ImageBase::typeKey:
             case DrawableBase::typeKey:
             case NodeBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -34,8 +40,10 @@
 
 public:
     inline uint32_t assetId() const { return m_AssetId; }
-    void assetId(uint32_t value) {
-        if (m_AssetId == value) {
+    void assetId(uint32_t value)
+    {
+        if (m_AssetId == value)
+        {
             return;
         }
         m_AssetId = value;
@@ -43,14 +51,19 @@
     }
 
     Core* clone() const override;
-    void copy(const ImageBase& object) {
+    void copy(const ImageBase& object)
+    {
         m_AssetId = object.m_AssetId;
         Drawable::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case assetIdPropertyKey: m_AssetId = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case assetIdPropertyKey:
+                m_AssetId = CoreUintType::deserialize(reader);
+                return true;
         }
         return Drawable::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/mesh_base.hpp b/include/rive/generated/shapes/mesh_base.hpp
index 3cfed2d..c34e88a 100644
--- a/include/rive/generated/shapes/mesh_base.hpp
+++ b/include/rive/generated/shapes/mesh_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/container_component.hpp"
 #include "rive/core/field_types/core_bytes_type.hpp"
 #include "rive/span.hpp"
-namespace rive {
-class MeshBase : public ContainerComponent {
+namespace rive
+{
+class MeshBase : public ContainerComponent
+{
 protected:
     typedef ContainerComponent Super;
 
@@ -13,12 +15,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case MeshBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -31,13 +37,16 @@
     virtual void copyTriangleIndexBytes(const MeshBase& object) = 0;
 
     Core* clone() const override;
-    void copy(const MeshBase& object) {
+    void copy(const MeshBase& object)
+    {
         copyTriangleIndexBytes(object);
         ContainerComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case triangleIndexBytesPropertyKey:
                 decodeTriangleIndexBytes(CoreBytesType::deserialize(reader));
                 return true;
diff --git a/include/rive/generated/shapes/mesh_vertex_base.hpp b/include/rive/generated/shapes/mesh_vertex_base.hpp
index 5a1972e..196350e 100644
--- a/include/rive/generated/shapes/mesh_vertex_base.hpp
+++ b/include/rive/generated/shapes/mesh_vertex_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_MESH_VERTEX_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/shapes/vertex.hpp"
-namespace rive {
-class MeshVertexBase : public Vertex {
+namespace rive
+{
+class MeshVertexBase : public Vertex
+{
 protected:
     typedef Vertex Super;
 
@@ -12,13 +14,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case MeshVertexBase::typeKey:
             case VertexBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -33,8 +39,10 @@
 
 public:
     inline float u() const { return m_U; }
-    void u(float value) {
-        if (m_U == value) {
+    void u(float value)
+    {
+        if (m_U == value)
+        {
             return;
         }
         m_U = value;
@@ -42,8 +50,10 @@
     }
 
     inline float v() const { return m_V; }
-    void v(float value) {
-        if (m_V == value) {
+    void v(float value)
+    {
+        if (m_V == value)
+        {
             return;
         }
         m_V = value;
@@ -51,16 +61,23 @@
     }
 
     Core* clone() const override;
-    void copy(const MeshVertexBase& object) {
+    void copy(const MeshVertexBase& object)
+    {
         m_U = object.m_U;
         m_V = object.m_V;
         Vertex::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case uPropertyKey: m_U = CoreDoubleType::deserialize(reader); return true;
-            case vPropertyKey: m_V = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case uPropertyKey:
+                m_U = CoreDoubleType::deserialize(reader);
+                return true;
+            case vPropertyKey:
+                m_V = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return Vertex::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/paint/fill_base.hpp b/include/rive/generated/shapes/paint/fill_base.hpp
index 12343ca..ea1f32e 100644
--- a/include/rive/generated/shapes/paint/fill_base.hpp
+++ b/include/rive/generated/shapes/paint/fill_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_FILL_BASE_HPP_
 #include "rive/core/field_types/core_uint_type.hpp"
 #include "rive/shapes/paint/shape_paint.hpp"
-namespace rive {
-class FillBase : public ShapePaint {
+namespace rive
+{
+class FillBase : public ShapePaint
+{
 protected:
     typedef ShapePaint Super;
 
@@ -12,13 +14,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case FillBase::typeKey:
             case ShapePaintBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -31,8 +37,10 @@
 
 public:
     inline uint32_t fillRule() const { return m_FillRule; }
-    void fillRule(uint32_t value) {
-        if (m_FillRule == value) {
+    void fillRule(uint32_t value)
+    {
+        if (m_FillRule == value)
+        {
             return;
         }
         m_FillRule = value;
@@ -40,14 +48,19 @@
     }
 
     Core* clone() const override;
-    void copy(const FillBase& object) {
+    void copy(const FillBase& object)
+    {
         m_FillRule = object.m_FillRule;
         ShapePaint::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case fillRulePropertyKey: m_FillRule = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case fillRulePropertyKey:
+                m_FillRule = CoreUintType::deserialize(reader);
+                return true;
         }
         return ShapePaint::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/paint/gradient_stop_base.hpp b/include/rive/generated/shapes/paint/gradient_stop_base.hpp
index 2acbd41..e33431c 100644
--- a/include/rive/generated/shapes/paint/gradient_stop_base.hpp
+++ b/include/rive/generated/shapes/paint/gradient_stop_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/component.hpp"
 #include "rive/core/field_types/core_color_type.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class GradientStopBase : public Component {
+namespace rive
+{
+class GradientStopBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -13,11 +15,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case GradientStopBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -32,8 +38,10 @@
 
 public:
     inline int colorValue() const { return m_ColorValue; }
-    void colorValue(int value) {
-        if (m_ColorValue == value) {
+    void colorValue(int value)
+    {
+        if (m_ColorValue == value)
+        {
             return;
         }
         m_ColorValue = value;
@@ -41,8 +49,10 @@
     }
 
     inline float position() const { return m_Position; }
-    void position(float value) {
-        if (m_Position == value) {
+    void position(float value)
+    {
+        if (m_Position == value)
+        {
             return;
         }
         m_Position = value;
@@ -50,18 +60,23 @@
     }
 
     Core* clone() const override;
-    void copy(const GradientStopBase& object) {
+    void copy(const GradientStopBase& object)
+    {
         m_ColorValue = object.m_ColorValue;
         m_Position = object.m_Position;
         Component::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case colorValuePropertyKey:
                 m_ColorValue = CoreColorType::deserialize(reader);
                 return true;
-            case positionPropertyKey: m_Position = CoreDoubleType::deserialize(reader); return true;
+            case positionPropertyKey:
+                m_Position = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return Component::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/paint/linear_gradient_base.hpp b/include/rive/generated/shapes/paint/linear_gradient_base.hpp
index c20770c..95fd3ff 100644
--- a/include/rive/generated/shapes/paint/linear_gradient_base.hpp
+++ b/include/rive/generated/shapes/paint/linear_gradient_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_LINEAR_GRADIENT_BASE_HPP_
 #include "rive/container_component.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class LinearGradientBase : public ContainerComponent {
+namespace rive
+{
+class LinearGradientBase : public ContainerComponent
+{
 protected:
     typedef ContainerComponent Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case LinearGradientBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -38,8 +44,10 @@
 
 public:
     inline float startX() const { return m_StartX; }
-    void startX(float value) {
-        if (m_StartX == value) {
+    void startX(float value)
+    {
+        if (m_StartX == value)
+        {
             return;
         }
         m_StartX = value;
@@ -47,8 +55,10 @@
     }
 
     inline float startY() const { return m_StartY; }
-    void startY(float value) {
-        if (m_StartY == value) {
+    void startY(float value)
+    {
+        if (m_StartY == value)
+        {
             return;
         }
         m_StartY = value;
@@ -56,8 +66,10 @@
     }
 
     inline float endX() const { return m_EndX; }
-    void endX(float value) {
-        if (m_EndX == value) {
+    void endX(float value)
+    {
+        if (m_EndX == value)
+        {
             return;
         }
         m_EndX = value;
@@ -65,8 +77,10 @@
     }
 
     inline float endY() const { return m_EndY; }
-    void endY(float value) {
-        if (m_EndY == value) {
+    void endY(float value)
+    {
+        if (m_EndY == value)
+        {
             return;
         }
         m_EndY = value;
@@ -74,8 +88,10 @@
     }
 
     inline float opacity() const { return m_Opacity; }
-    void opacity(float value) {
-        if (m_Opacity == value) {
+    void opacity(float value)
+    {
+        if (m_Opacity == value)
+        {
             return;
         }
         m_Opacity = value;
@@ -83,7 +99,8 @@
     }
 
     Core* clone() const override;
-    void copy(const LinearGradientBase& object) {
+    void copy(const LinearGradientBase& object)
+    {
         m_StartX = object.m_StartX;
         m_StartY = object.m_StartY;
         m_EndX = object.m_EndX;
@@ -92,13 +109,25 @@
         ContainerComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case startXPropertyKey: m_StartX = CoreDoubleType::deserialize(reader); return true;
-            case startYPropertyKey: m_StartY = CoreDoubleType::deserialize(reader); return true;
-            case endXPropertyKey: m_EndX = CoreDoubleType::deserialize(reader); return true;
-            case endYPropertyKey: m_EndY = CoreDoubleType::deserialize(reader); return true;
-            case opacityPropertyKey: m_Opacity = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case startXPropertyKey:
+                m_StartX = CoreDoubleType::deserialize(reader);
+                return true;
+            case startYPropertyKey:
+                m_StartY = CoreDoubleType::deserialize(reader);
+                return true;
+            case endXPropertyKey:
+                m_EndX = CoreDoubleType::deserialize(reader);
+                return true;
+            case endYPropertyKey:
+                m_EndY = CoreDoubleType::deserialize(reader);
+                return true;
+            case opacityPropertyKey:
+                m_Opacity = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return ContainerComponent::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/paint/radial_gradient_base.hpp b/include/rive/generated/shapes/paint/radial_gradient_base.hpp
index 995f8ae..aca9673 100644
--- a/include/rive/generated/shapes/paint/radial_gradient_base.hpp
+++ b/include/rive/generated/shapes/paint/radial_gradient_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_RADIAL_GRADIENT_BASE_HPP_
 #define _RIVE_RADIAL_GRADIENT_BASE_HPP_
 #include "rive/shapes/paint/linear_gradient.hpp"
-namespace rive {
-class RadialGradientBase : public LinearGradient {
+namespace rive
+{
+class RadialGradientBase : public LinearGradient
+{
 protected:
     typedef LinearGradient Super;
 
@@ -11,13 +13,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case RadialGradientBase::typeKey:
             case LinearGradientBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/shapes/paint/shape_paint_base.hpp b/include/rive/generated/shapes/paint/shape_paint_base.hpp
index 091cda6..27cdfa4 100644
--- a/include/rive/generated/shapes/paint/shape_paint_base.hpp
+++ b/include/rive/generated/shapes/paint/shape_paint_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_SHAPE_PAINT_BASE_HPP_
 #include "rive/container_component.hpp"
 #include "rive/core/field_types/core_bool_type.hpp"
-namespace rive {
-class ShapePaintBase : public ContainerComponent {
+namespace rive
+{
+class ShapePaintBase : public ContainerComponent
+{
 protected:
     typedef ContainerComponent Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ShapePaintBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,22 +36,29 @@
 
 public:
     virtual bool isVisible() const { return m_IsVisible; }
-    void isVisible(bool value) {
-        if (m_IsVisible == value) {
+    void isVisible(bool value)
+    {
+        if (m_IsVisible == value)
+        {
             return;
         }
         m_IsVisible = value;
         isVisibleChanged();
     }
 
-    void copy(const ShapePaintBase& object) {
+    void copy(const ShapePaintBase& object)
+    {
         m_IsVisible = object.m_IsVisible;
         ContainerComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case isVisiblePropertyKey: m_IsVisible = CoreBoolType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case isVisiblePropertyKey:
+                m_IsVisible = CoreBoolType::deserialize(reader);
+                return true;
         }
         return ContainerComponent::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/paint/solid_color_base.hpp b/include/rive/generated/shapes/paint/solid_color_base.hpp
index fb131c5..2ebc9d3 100644
--- a/include/rive/generated/shapes/paint/solid_color_base.hpp
+++ b/include/rive/generated/shapes/paint/solid_color_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_SOLID_COLOR_BASE_HPP_
 #include "rive/component.hpp"
 #include "rive/core/field_types/core_color_type.hpp"
-namespace rive {
-class SolidColorBase : public Component {
+namespace rive
+{
+class SolidColorBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -12,11 +14,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case SolidColorBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -29,8 +35,10 @@
 
 public:
     inline int colorValue() const { return m_ColorValue; }
-    void colorValue(int value) {
-        if (m_ColorValue == value) {
+    void colorValue(int value)
+    {
+        if (m_ColorValue == value)
+        {
             return;
         }
         m_ColorValue = value;
@@ -38,13 +46,16 @@
     }
 
     Core* clone() const override;
-    void copy(const SolidColorBase& object) {
+    void copy(const SolidColorBase& object)
+    {
         m_ColorValue = object.m_ColorValue;
         Component::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case colorValuePropertyKey:
                 m_ColorValue = CoreColorType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/shapes/paint/stroke_base.hpp b/include/rive/generated/shapes/paint/stroke_base.hpp
index e101e9d..b23107f 100644
--- a/include/rive/generated/shapes/paint/stroke_base.hpp
+++ b/include/rive/generated/shapes/paint/stroke_base.hpp
@@ -4,8 +4,10 @@
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
 #include "rive/shapes/paint/shape_paint.hpp"
-namespace rive {
-class StrokeBase : public ShapePaint {
+namespace rive
+{
+class StrokeBase : public ShapePaint
+{
 protected:
     typedef ShapePaint Super;
 
@@ -14,13 +16,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StrokeBase::typeKey:
             case ShapePaintBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -39,8 +45,10 @@
 
 public:
     inline float thickness() const { return m_Thickness; }
-    void thickness(float value) {
-        if (m_Thickness == value) {
+    void thickness(float value)
+    {
+        if (m_Thickness == value)
+        {
             return;
         }
         m_Thickness = value;
@@ -48,8 +56,10 @@
     }
 
     inline uint32_t cap() const { return m_Cap; }
-    void cap(uint32_t value) {
-        if (m_Cap == value) {
+    void cap(uint32_t value)
+    {
+        if (m_Cap == value)
+        {
             return;
         }
         m_Cap = value;
@@ -57,8 +67,10 @@
     }
 
     inline uint32_t join() const { return m_Join; }
-    void join(uint32_t value) {
-        if (m_Join == value) {
+    void join(uint32_t value)
+    {
+        if (m_Join == value)
+        {
             return;
         }
         m_Join = value;
@@ -66,8 +78,10 @@
     }
 
     inline bool transformAffectsStroke() const { return m_TransformAffectsStroke; }
-    void transformAffectsStroke(bool value) {
-        if (m_TransformAffectsStroke == value) {
+    void transformAffectsStroke(bool value)
+    {
+        if (m_TransformAffectsStroke == value)
+        {
             return;
         }
         m_TransformAffectsStroke = value;
@@ -75,7 +89,8 @@
     }
 
     Core* clone() const override;
-    void copy(const StrokeBase& object) {
+    void copy(const StrokeBase& object)
+    {
         m_Thickness = object.m_Thickness;
         m_Cap = object.m_Cap;
         m_Join = object.m_Join;
@@ -83,13 +98,19 @@
         ShapePaint::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case thicknessPropertyKey:
                 m_Thickness = CoreDoubleType::deserialize(reader);
                 return true;
-            case capPropertyKey: m_Cap = CoreUintType::deserialize(reader); return true;
-            case joinPropertyKey: m_Join = CoreUintType::deserialize(reader); return true;
+            case capPropertyKey:
+                m_Cap = CoreUintType::deserialize(reader);
+                return true;
+            case joinPropertyKey:
+                m_Join = CoreUintType::deserialize(reader);
+                return true;
             case transformAffectsStrokePropertyKey:
                 m_TransformAffectsStroke = CoreBoolType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/shapes/paint/trim_path_base.hpp b/include/rive/generated/shapes/paint/trim_path_base.hpp
index 018ec4b..4838269 100644
--- a/include/rive/generated/shapes/paint/trim_path_base.hpp
+++ b/include/rive/generated/shapes/paint/trim_path_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/component.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
-namespace rive {
-class TrimPathBase : public Component {
+namespace rive
+{
+class TrimPathBase : public Component
+{
 protected:
     typedef Component Super;
 
@@ -13,11 +15,15 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TrimPathBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -36,8 +42,10 @@
 
 public:
     inline float start() const { return m_Start; }
-    void start(float value) {
-        if (m_Start == value) {
+    void start(float value)
+    {
+        if (m_Start == value)
+        {
             return;
         }
         m_Start = value;
@@ -45,8 +53,10 @@
     }
 
     inline float end() const { return m_End; }
-    void end(float value) {
-        if (m_End == value) {
+    void end(float value)
+    {
+        if (m_End == value)
+        {
             return;
         }
         m_End = value;
@@ -54,8 +64,10 @@
     }
 
     inline float offset() const { return m_Offset; }
-    void offset(float value) {
-        if (m_Offset == value) {
+    void offset(float value)
+    {
+        if (m_Offset == value)
+        {
             return;
         }
         m_Offset = value;
@@ -63,8 +75,10 @@
     }
 
     inline uint32_t modeValue() const { return m_ModeValue; }
-    void modeValue(uint32_t value) {
-        if (m_ModeValue == value) {
+    void modeValue(uint32_t value)
+    {
+        if (m_ModeValue == value)
+        {
             return;
         }
         m_ModeValue = value;
@@ -72,7 +86,8 @@
     }
 
     Core* clone() const override;
-    void copy(const TrimPathBase& object) {
+    void copy(const TrimPathBase& object)
+    {
         m_Start = object.m_Start;
         m_End = object.m_End;
         m_Offset = object.m_Offset;
@@ -80,12 +95,22 @@
         Component::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case startPropertyKey: m_Start = CoreDoubleType::deserialize(reader); return true;
-            case endPropertyKey: m_End = CoreDoubleType::deserialize(reader); return true;
-            case offsetPropertyKey: m_Offset = CoreDoubleType::deserialize(reader); return true;
-            case modeValuePropertyKey: m_ModeValue = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case startPropertyKey:
+                m_Start = CoreDoubleType::deserialize(reader);
+                return true;
+            case endPropertyKey:
+                m_End = CoreDoubleType::deserialize(reader);
+                return true;
+            case offsetPropertyKey:
+                m_Offset = CoreDoubleType::deserialize(reader);
+                return true;
+            case modeValuePropertyKey:
+                m_ModeValue = CoreUintType::deserialize(reader);
+                return true;
         }
         return Component::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/parametric_path_base.hpp b/include/rive/generated/shapes/parametric_path_base.hpp
index a38b7cb..2f87b87 100644
--- a/include/rive/generated/shapes/parametric_path_base.hpp
+++ b/include/rive/generated/shapes/parametric_path_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_PARAMETRIC_PATH_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/shapes/path.hpp"
-namespace rive {
-class ParametricPathBase : public Path {
+namespace rive
+{
+class ParametricPathBase : public Path
+{
 protected:
     typedef Path Super;
 
@@ -12,16 +14,20 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ParametricPathBase::typeKey:
             case PathBase::typeKey:
             case NodeBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -40,8 +46,10 @@
 
 public:
     inline float width() const { return m_Width; }
-    void width(float value) {
-        if (m_Width == value) {
+    void width(float value)
+    {
+        if (m_Width == value)
+        {
             return;
         }
         m_Width = value;
@@ -49,8 +57,10 @@
     }
 
     inline float height() const { return m_Height; }
-    void height(float value) {
-        if (m_Height == value) {
+    void height(float value)
+    {
+        if (m_Height == value)
+        {
             return;
         }
         m_Height = value;
@@ -58,8 +68,10 @@
     }
 
     inline float originX() const { return m_OriginX; }
-    void originX(float value) {
-        if (m_OriginX == value) {
+    void originX(float value)
+    {
+        if (m_OriginX == value)
+        {
             return;
         }
         m_OriginX = value;
@@ -67,15 +79,18 @@
     }
 
     inline float originY() const { return m_OriginY; }
-    void originY(float value) {
-        if (m_OriginY == value) {
+    void originY(float value)
+    {
+        if (m_OriginY == value)
+        {
             return;
         }
         m_OriginY = value;
         originYChanged();
     }
 
-    void copy(const ParametricPathBase& object) {
+    void copy(const ParametricPathBase& object)
+    {
         m_Width = object.m_Width;
         m_Height = object.m_Height;
         m_OriginX = object.m_OriginX;
@@ -83,12 +98,22 @@
         Path::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case widthPropertyKey: m_Width = CoreDoubleType::deserialize(reader); return true;
-            case heightPropertyKey: m_Height = CoreDoubleType::deserialize(reader); return true;
-            case originXPropertyKey: m_OriginX = CoreDoubleType::deserialize(reader); return true;
-            case originYPropertyKey: m_OriginY = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case widthPropertyKey:
+                m_Width = CoreDoubleType::deserialize(reader);
+                return true;
+            case heightPropertyKey:
+                m_Height = CoreDoubleType::deserialize(reader);
+                return true;
+            case originXPropertyKey:
+                m_OriginX = CoreDoubleType::deserialize(reader);
+                return true;
+            case originYPropertyKey:
+                m_OriginY = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return Path::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/path_base.hpp b/include/rive/generated/shapes/path_base.hpp
index 2cf6d74..c90d605 100644
--- a/include/rive/generated/shapes/path_base.hpp
+++ b/include/rive/generated/shapes/path_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_PATH_BASE_HPP_
 #include "rive/core/field_types/core_uint_type.hpp"
 #include "rive/node.hpp"
-namespace rive {
-class PathBase : public Node {
+namespace rive
+{
+class PathBase : public Node
+{
 protected:
     typedef Node Super;
 
@@ -12,15 +14,19 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case PathBase::typeKey:
             case NodeBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -33,22 +39,29 @@
 
 public:
     inline uint32_t pathFlags() const { return m_PathFlags; }
-    void pathFlags(uint32_t value) {
-        if (m_PathFlags == value) {
+    void pathFlags(uint32_t value)
+    {
+        if (m_PathFlags == value)
+        {
             return;
         }
         m_PathFlags = value;
         pathFlagsChanged();
     }
 
-    void copy(const PathBase& object) {
+    void copy(const PathBase& object)
+    {
         m_PathFlags = object.m_PathFlags;
         Node::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case pathFlagsPropertyKey: m_PathFlags = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case pathFlagsPropertyKey:
+                m_PathFlags = CoreUintType::deserialize(reader);
+                return true;
         }
         return Node::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/path_vertex_base.hpp b/include/rive/generated/shapes/path_vertex_base.hpp
index 6fb524c..86de3a5 100644
--- a/include/rive/generated/shapes/path_vertex_base.hpp
+++ b/include/rive/generated/shapes/path_vertex_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_PATH_VERTEX_BASE_HPP_
 #define _RIVE_PATH_VERTEX_BASE_HPP_
 #include "rive/shapes/vertex.hpp"
-namespace rive {
-class PathVertexBase : public Vertex {
+namespace rive
+{
+class PathVertexBase : public Vertex
+{
 protected:
     typedef Vertex Super;
 
@@ -11,13 +13,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case PathVertexBase::typeKey:
             case VertexBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/shapes/points_path_base.hpp b/include/rive/generated/shapes/points_path_base.hpp
index 69ef411..a999514 100644
--- a/include/rive/generated/shapes/points_path_base.hpp
+++ b/include/rive/generated/shapes/points_path_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_POINTS_PATH_BASE_HPP_
 #include "rive/core/field_types/core_bool_type.hpp"
 #include "rive/shapes/path.hpp"
-namespace rive {
-class PointsPathBase : public Path {
+namespace rive
+{
+class PointsPathBase : public Path
+{
 protected:
     typedef Path Super;
 
@@ -12,16 +14,20 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case PointsPathBase::typeKey:
             case PathBase::typeKey:
             case NodeBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -34,8 +40,10 @@
 
 public:
     inline bool isClosed() const { return m_IsClosed; }
-    void isClosed(bool value) {
-        if (m_IsClosed == value) {
+    void isClosed(bool value)
+    {
+        if (m_IsClosed == value)
+        {
             return;
         }
         m_IsClosed = value;
@@ -43,14 +51,19 @@
     }
 
     Core* clone() const override;
-    void copy(const PointsPathBase& object) {
+    void copy(const PointsPathBase& object)
+    {
         m_IsClosed = object.m_IsClosed;
         Path::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case isClosedPropertyKey: m_IsClosed = CoreBoolType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case isClosedPropertyKey:
+                m_IsClosed = CoreBoolType::deserialize(reader);
+                return true;
         }
         return Path::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/polygon_base.hpp b/include/rive/generated/shapes/polygon_base.hpp
index de68236..e71f8f5 100644
--- a/include/rive/generated/shapes/polygon_base.hpp
+++ b/include/rive/generated/shapes/polygon_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/core/field_types/core_uint_type.hpp"
 #include "rive/shapes/parametric_path.hpp"
-namespace rive {
-class PolygonBase : public ParametricPath {
+namespace rive
+{
+class PolygonBase : public ParametricPath
+{
 protected:
     typedef ParametricPath Super;
 
@@ -13,8 +15,10 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case PolygonBase::typeKey:
             case ParametricPathBase::typeKey:
             case PathBase::typeKey:
@@ -22,8 +26,10 @@
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -38,8 +44,10 @@
 
 public:
     inline uint32_t points() const { return m_Points; }
-    void points(uint32_t value) {
-        if (m_Points == value) {
+    void points(uint32_t value)
+    {
+        if (m_Points == value)
+        {
             return;
         }
         m_Points = value;
@@ -47,8 +55,10 @@
     }
 
     inline float cornerRadius() const { return m_CornerRadius; }
-    void cornerRadius(float value) {
-        if (m_CornerRadius == value) {
+    void cornerRadius(float value)
+    {
+        if (m_CornerRadius == value)
+        {
             return;
         }
         m_CornerRadius = value;
@@ -56,15 +66,20 @@
     }
 
     Core* clone() const override;
-    void copy(const PolygonBase& object) {
+    void copy(const PolygonBase& object)
+    {
         m_Points = object.m_Points;
         m_CornerRadius = object.m_CornerRadius;
         ParametricPath::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case pointsPropertyKey: m_Points = CoreUintType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case pointsPropertyKey:
+                m_Points = CoreUintType::deserialize(reader);
+                return true;
             case cornerRadiusPropertyKey:
                 m_CornerRadius = CoreDoubleType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/shapes/rectangle_base.hpp b/include/rive/generated/shapes/rectangle_base.hpp
index a9d8a13..c85ac93 100644
--- a/include/rive/generated/shapes/rectangle_base.hpp
+++ b/include/rive/generated/shapes/rectangle_base.hpp
@@ -3,8 +3,10 @@
 #include "rive/core/field_types/core_bool_type.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/shapes/parametric_path.hpp"
-namespace rive {
-class RectangleBase : public ParametricPath {
+namespace rive
+{
+class RectangleBase : public ParametricPath
+{
 protected:
     typedef ParametricPath Super;
 
@@ -13,8 +15,10 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case RectangleBase::typeKey:
             case ParametricPathBase::typeKey:
             case PathBase::typeKey:
@@ -22,8 +26,10 @@
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -44,8 +50,10 @@
 
 public:
     inline bool linkCornerRadius() const { return m_LinkCornerRadius; }
-    void linkCornerRadius(bool value) {
-        if (m_LinkCornerRadius == value) {
+    void linkCornerRadius(bool value)
+    {
+        if (m_LinkCornerRadius == value)
+        {
             return;
         }
         m_LinkCornerRadius = value;
@@ -53,8 +61,10 @@
     }
 
     inline float cornerRadiusTL() const { return m_CornerRadiusTL; }
-    void cornerRadiusTL(float value) {
-        if (m_CornerRadiusTL == value) {
+    void cornerRadiusTL(float value)
+    {
+        if (m_CornerRadiusTL == value)
+        {
             return;
         }
         m_CornerRadiusTL = value;
@@ -62,8 +72,10 @@
     }
 
     inline float cornerRadiusTR() const { return m_CornerRadiusTR; }
-    void cornerRadiusTR(float value) {
-        if (m_CornerRadiusTR == value) {
+    void cornerRadiusTR(float value)
+    {
+        if (m_CornerRadiusTR == value)
+        {
             return;
         }
         m_CornerRadiusTR = value;
@@ -71,8 +83,10 @@
     }
 
     inline float cornerRadiusBL() const { return m_CornerRadiusBL; }
-    void cornerRadiusBL(float value) {
-        if (m_CornerRadiusBL == value) {
+    void cornerRadiusBL(float value)
+    {
+        if (m_CornerRadiusBL == value)
+        {
             return;
         }
         m_CornerRadiusBL = value;
@@ -80,8 +94,10 @@
     }
 
     inline float cornerRadiusBR() const { return m_CornerRadiusBR; }
-    void cornerRadiusBR(float value) {
-        if (m_CornerRadiusBR == value) {
+    void cornerRadiusBR(float value)
+    {
+        if (m_CornerRadiusBR == value)
+        {
             return;
         }
         m_CornerRadiusBR = value;
@@ -89,7 +105,8 @@
     }
 
     Core* clone() const override;
-    void copy(const RectangleBase& object) {
+    void copy(const RectangleBase& object)
+    {
         m_LinkCornerRadius = object.m_LinkCornerRadius;
         m_CornerRadiusTL = object.m_CornerRadiusTL;
         m_CornerRadiusTR = object.m_CornerRadiusTR;
@@ -98,8 +115,10 @@
         ParametricPath::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case linkCornerRadiusPropertyKey:
                 m_LinkCornerRadius = CoreBoolType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/shapes/shape_base.hpp b/include/rive/generated/shapes/shape_base.hpp
index 02b063d..c73b220 100644
--- a/include/rive/generated/shapes/shape_base.hpp
+++ b/include/rive/generated/shapes/shape_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_SHAPE_BASE_HPP_
 #define _RIVE_SHAPE_BASE_HPP_
 #include "rive/drawable.hpp"
-namespace rive {
-class ShapeBase : public Drawable {
+namespace rive
+{
+class ShapeBase : public Drawable
+{
 protected:
     typedef Drawable Super;
 
@@ -11,16 +13,20 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case ShapeBase::typeKey:
             case DrawableBase::typeKey:
             case NodeBase::typeKey:
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/shapes/star_base.hpp b/include/rive/generated/shapes/star_base.hpp
index 3be146d..3d95448 100644
--- a/include/rive/generated/shapes/star_base.hpp
+++ b/include/rive/generated/shapes/star_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STAR_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/shapes/polygon.hpp"
-namespace rive {
-class StarBase : public Polygon {
+namespace rive
+{
+class StarBase : public Polygon
+{
 protected:
     typedef Polygon Super;
 
@@ -12,8 +14,10 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StarBase::typeKey:
             case PolygonBase::typeKey:
             case ParametricPathBase::typeKey:
@@ -22,8 +26,10 @@
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -36,8 +42,10 @@
 
 public:
     inline float innerRadius() const { return m_InnerRadius; }
-    void innerRadius(float value) {
-        if (m_InnerRadius == value) {
+    void innerRadius(float value)
+    {
+        if (m_InnerRadius == value)
+        {
             return;
         }
         m_InnerRadius = value;
@@ -45,13 +53,16 @@
     }
 
     Core* clone() const override;
-    void copy(const StarBase& object) {
+    void copy(const StarBase& object)
+    {
         m_InnerRadius = object.m_InnerRadius;
         Polygon::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
             case innerRadiusPropertyKey:
                 m_InnerRadius = CoreDoubleType::deserialize(reader);
                 return true;
diff --git a/include/rive/generated/shapes/straight_vertex_base.hpp b/include/rive/generated/shapes/straight_vertex_base.hpp
index a8b28e4..df1f886 100644
--- a/include/rive/generated/shapes/straight_vertex_base.hpp
+++ b/include/rive/generated/shapes/straight_vertex_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STRAIGHT_VERTEX_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/shapes/path_vertex.hpp"
-namespace rive {
-class StraightVertexBase : public PathVertex {
+namespace rive
+{
+class StraightVertexBase : public PathVertex
+{
 protected:
     typedef PathVertex Super;
 
@@ -12,14 +14,18 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case StraightVertexBase::typeKey:
             case PathVertexBase::typeKey:
             case VertexBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -32,8 +38,10 @@
 
 public:
     inline float radius() const { return m_Radius; }
-    void radius(float value) {
-        if (m_Radius == value) {
+    void radius(float value)
+    {
+        if (m_Radius == value)
+        {
             return;
         }
         m_Radius = value;
@@ -41,14 +49,19 @@
     }
 
     Core* clone() const override;
-    void copy(const StraightVertexBase& object) {
+    void copy(const StraightVertexBase& object)
+    {
         m_Radius = object.m_Radius;
         PathVertex::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case radiusPropertyKey: m_Radius = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case radiusPropertyKey:
+                m_Radius = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return PathVertex::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/shapes/triangle_base.hpp b/include/rive/generated/shapes/triangle_base.hpp
index 45a9c93..3b37b53 100644
--- a/include/rive/generated/shapes/triangle_base.hpp
+++ b/include/rive/generated/shapes/triangle_base.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_TRIANGLE_BASE_HPP_
 #define _RIVE_TRIANGLE_BASE_HPP_
 #include "rive/shapes/parametric_path.hpp"
-namespace rive {
-class TriangleBase : public ParametricPath {
+namespace rive
+{
+class TriangleBase : public ParametricPath
+{
 protected:
     typedef ParametricPath Super;
 
@@ -11,8 +13,10 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TriangleBase::typeKey:
             case ParametricPathBase::typeKey:
             case PathBase::typeKey:
@@ -20,8 +24,10 @@
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/include/rive/generated/shapes/vertex_base.hpp b/include/rive/generated/shapes/vertex_base.hpp
index 75606a8..bd872c1 100644
--- a/include/rive/generated/shapes/vertex_base.hpp
+++ b/include/rive/generated/shapes/vertex_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_VERTEX_BASE_HPP_
 #include "rive/container_component.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class VertexBase : public ContainerComponent {
+namespace rive
+{
+class VertexBase : public ContainerComponent
+{
 protected:
     typedef ContainerComponent Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case VertexBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -32,8 +38,10 @@
 
 public:
     inline float x() const { return m_X; }
-    void x(float value) {
-        if (m_X == value) {
+    void x(float value)
+    {
+        if (m_X == value)
+        {
             return;
         }
         m_X = value;
@@ -41,24 +49,33 @@
     }
 
     inline float y() const { return m_Y; }
-    void y(float value) {
-        if (m_Y == value) {
+    void y(float value)
+    {
+        if (m_Y == value)
+        {
             return;
         }
         m_Y = value;
         yChanged();
     }
 
-    void copy(const VertexBase& object) {
+    void copy(const VertexBase& object)
+    {
         m_X = object.m_X;
         m_Y = object.m_Y;
         ContainerComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case xPropertyKey: m_X = CoreDoubleType::deserialize(reader); return true;
-            case yPropertyKey: m_Y = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case xPropertyKey:
+                m_X = CoreDoubleType::deserialize(reader);
+                return true;
+            case yPropertyKey:
+                m_Y = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return ContainerComponent::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/transform_component_base.hpp b/include/rive/generated/transform_component_base.hpp
index 0eb33f1..896ab06 100644
--- a/include/rive/generated/transform_component_base.hpp
+++ b/include/rive/generated/transform_component_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_TRANSFORM_COMPONENT_BASE_HPP_
 #include "rive/core/field_types/core_double_type.hpp"
 #include "rive/world_transform_component.hpp"
-namespace rive {
-class TransformComponentBase : public WorldTransformComponent {
+namespace rive
+{
+class TransformComponentBase : public WorldTransformComponent
+{
 protected:
     typedef WorldTransformComponent Super;
 
@@ -12,13 +14,17 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case TransformComponentBase::typeKey:
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -35,8 +41,10 @@
 
 public:
     inline float rotation() const { return m_Rotation; }
-    void rotation(float value) {
-        if (m_Rotation == value) {
+    void rotation(float value)
+    {
+        if (m_Rotation == value)
+        {
             return;
         }
         m_Rotation = value;
@@ -44,8 +52,10 @@
     }
 
     inline float scaleX() const { return m_ScaleX; }
-    void scaleX(float value) {
-        if (m_ScaleX == value) {
+    void scaleX(float value)
+    {
+        if (m_ScaleX == value)
+        {
             return;
         }
         m_ScaleX = value;
@@ -53,26 +63,37 @@
     }
 
     inline float scaleY() const { return m_ScaleY; }
-    void scaleY(float value) {
-        if (m_ScaleY == value) {
+    void scaleY(float value)
+    {
+        if (m_ScaleY == value)
+        {
             return;
         }
         m_ScaleY = value;
         scaleYChanged();
     }
 
-    void copy(const TransformComponentBase& object) {
+    void copy(const TransformComponentBase& object)
+    {
         m_Rotation = object.m_Rotation;
         m_ScaleX = object.m_ScaleX;
         m_ScaleY = object.m_ScaleY;
         WorldTransformComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case rotationPropertyKey: m_Rotation = CoreDoubleType::deserialize(reader); return true;
-            case scaleXPropertyKey: m_ScaleX = CoreDoubleType::deserialize(reader); return true;
-            case scaleYPropertyKey: m_ScaleY = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case rotationPropertyKey:
+                m_Rotation = CoreDoubleType::deserialize(reader);
+                return true;
+            case scaleXPropertyKey:
+                m_ScaleX = CoreDoubleType::deserialize(reader);
+                return true;
+            case scaleYPropertyKey:
+                m_ScaleY = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return WorldTransformComponent::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/generated/world_transform_component_base.hpp b/include/rive/generated/world_transform_component_base.hpp
index 5331fe4..169cb4f 100644
--- a/include/rive/generated/world_transform_component_base.hpp
+++ b/include/rive/generated/world_transform_component_base.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_WORLD_TRANSFORM_COMPONENT_BASE_HPP_
 #include "rive/container_component.hpp"
 #include "rive/core/field_types/core_double_type.hpp"
-namespace rive {
-class WorldTransformComponentBase : public ContainerComponent {
+namespace rive
+{
+class WorldTransformComponentBase : public ContainerComponent
+{
 protected:
     typedef ContainerComponent Super;
 
@@ -12,12 +14,16 @@
 
     /// Helper to quickly determine if a core object extends another without RTTI
     /// at runtime.
-    bool isTypeOf(uint16_t typeKey) const override {
-        switch (typeKey) {
+    bool isTypeOf(uint16_t typeKey) const override
+    {
+        switch (typeKey)
+        {
             case WorldTransformComponentBase::typeKey:
             case ContainerComponentBase::typeKey:
-            case ComponentBase::typeKey: return true;
-            default: return false;
+            case ComponentBase::typeKey:
+                return true;
+            default:
+                return false;
         }
     }
 
@@ -30,22 +36,29 @@
 
 public:
     inline float opacity() const { return m_Opacity; }
-    void opacity(float value) {
-        if (m_Opacity == value) {
+    void opacity(float value)
+    {
+        if (m_Opacity == value)
+        {
             return;
         }
         m_Opacity = value;
         opacityChanged();
     }
 
-    void copy(const WorldTransformComponentBase& object) {
+    void copy(const WorldTransformComponentBase& object)
+    {
         m_Opacity = object.m_Opacity;
         ContainerComponent::copy(object);
     }
 
-    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override {
-        switch (propertyKey) {
-            case opacityPropertyKey: m_Opacity = CoreDoubleType::deserialize(reader); return true;
+    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
+    {
+        switch (propertyKey)
+        {
+            case opacityPropertyKey:
+                m_Opacity = CoreDoubleType::deserialize(reader);
+                return true;
         }
         return ContainerComponent::deserialize(propertyKey, reader);
     }
diff --git a/include/rive/hit_info.hpp b/include/rive/hit_info.hpp
index 33f32b7..efbd03a 100644
--- a/include/rive/hit_info.hpp
+++ b/include/rive/hit_info.hpp
@@ -8,11 +8,13 @@
 #include "rive/math/aabb.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 
 class NestedArtboard;
 
-struct HitInfo {
+struct HitInfo
+{
     IAABB area;                          // input
     std::vector<NestedArtboard*> mounts; // output
 };
diff --git a/include/rive/hittest_command_path.hpp b/include/rive/hittest_command_path.hpp
index 7cf8cbc..4b9ca17 100644
--- a/include/rive/hittest_command_path.hpp
+++ b/include/rive/hittest_command_path.hpp
@@ -8,10 +8,12 @@
 #include "rive/command_path.hpp"
 #include "rive/math/hit_test.hpp"
 
-namespace rive {
+namespace rive
+{
 class HitTester;
 
-class HitTestCommandPath : public CommandPath {
+class HitTestCommandPath : public CommandPath
+{
     HitTester m_Tester;
     Mat2D m_Xform;
     IAABB m_Area;
diff --git a/include/rive/importers/artboard_importer.hpp b/include/rive/importers/artboard_importer.hpp
index 5aeaf28..a6fc955 100644
--- a/include/rive/importers/artboard_importer.hpp
+++ b/include/rive/importers/artboard_importer.hpp
@@ -3,12 +3,14 @@
 
 #include "rive/importers/import_stack.hpp"
 
-namespace rive {
+namespace rive
+{
 class Core;
 class Artboard;
 class LinearAnimation;
 class StateMachine;
-class ArtboardImporter : public ImportStackObject {
+class ArtboardImporter : public ImportStackObject
+{
 private:
     Artboard* m_Artboard;
 
diff --git a/include/rive/importers/backboard_importer.hpp b/include/rive/importers/backboard_importer.hpp
index 8ab6918..f237931 100644
--- a/include/rive/importers/backboard_importer.hpp
+++ b/include/rive/importers/backboard_importer.hpp
@@ -5,13 +5,15 @@
 #include <unordered_map>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Artboard;
 class NestedArtboard;
 class Backboard;
 class FileAsset;
 class FileAssetReferencer;
-class BackboardImporter : public ImportStackObject {
+class BackboardImporter : public ImportStackObject
+{
 private:
     Backboard* m_Backboard;
     std::unordered_map<int, Artboard*> m_ArtboardLookup;
diff --git a/include/rive/importers/file_asset_importer.hpp b/include/rive/importers/file_asset_importer.hpp
index 6af9fd9..7d80612 100644
--- a/include/rive/importers/file_asset_importer.hpp
+++ b/include/rive/importers/file_asset_importer.hpp
@@ -5,13 +5,15 @@
 #include <unordered_map>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class FileAsset;
 class FileAssetContents;
 class FileAssetResolver;
 class Factory;
 
-class FileAssetImporter : public ImportStackObject {
+class FileAssetImporter : public ImportStackObject
+{
 private:
     bool m_LoadedContents = false;
     FileAsset* m_FileAsset;
diff --git a/include/rive/importers/import_stack.hpp b/include/rive/importers/import_stack.hpp
index 26f5b59..841adb2 100644
--- a/include/rive/importers/import_stack.hpp
+++ b/include/rive/importers/import_stack.hpp
@@ -6,63 +6,78 @@
 #include <vector>
 #include <algorithm>
 
-namespace rive {
-class ImportStackObject {
+namespace rive
+{
+class ImportStackObject
+{
 public:
     virtual ~ImportStackObject() {}
     virtual StatusCode resolve() { return StatusCode::Ok; }
     virtual bool readNullObject() { return false; }
 };
 
-class ImportStack {
+class ImportStack
+{
 private:
     std::unordered_map<uint16_t, ImportStackObject*> m_Latests;
     std::vector<ImportStackObject*> m_LastAdded;
 
 public:
-    template <typename T = ImportStackObject> T* latest(uint16_t coreType) {
+    template <typename T = ImportStackObject> T* latest(uint16_t coreType)
+    {
         auto itr = m_Latests.find(coreType);
-        if (itr == m_Latests.end()) {
+        if (itr == m_Latests.end())
+        {
             return nullptr;
         }
         return reinterpret_cast<T*>(itr->second);
     }
 
-    StatusCode makeLatest(uint16_t coreType, ImportStackObject* object) {
+    StatusCode makeLatest(uint16_t coreType, ImportStackObject* object)
+    {
         // Clean up the old object in the stack.
         auto itr = m_Latests.find(coreType);
-        if (itr != m_Latests.end()) {
+        if (itr != m_Latests.end())
+        {
             auto stackObject = itr->second;
 
             // Remove it from latests.
             auto itr = std::find(m_LastAdded.begin(), m_LastAdded.end(), stackObject);
-            if (itr != m_LastAdded.end()) {
+            if (itr != m_LastAdded.end())
+            {
                 m_LastAdded.erase(itr);
             }
 
             StatusCode code = stackObject->resolve();
             delete stackObject;
-            if (code != StatusCode::Ok) {
+            if (code != StatusCode::Ok)
+            {
                 m_Latests.erase(coreType);
                 return code;
             }
         }
 
         // Set the new one.
-        if (object == nullptr) {
+        if (object == nullptr)
+        {
             m_Latests.erase(coreType);
-        } else {
+        }
+        else
+        {
             m_Latests[coreType] = object;
             m_LastAdded.push_back(object);
         }
         return StatusCode::Ok;
     }
 
-    StatusCode resolve() {
-        for (auto itr = m_LastAdded.rbegin(); itr != m_LastAdded.rend(); itr++) {
+    StatusCode resolve()
+    {
+        for (auto itr = m_LastAdded.rbegin(); itr != m_LastAdded.rend(); itr++)
+        {
             StatusCode code = (*itr)->resolve();
             delete *itr;
-            if (code != StatusCode::Ok) {
+            if (code != StatusCode::Ok)
+            {
                 return code;
             }
         }
@@ -71,15 +86,20 @@
         return StatusCode::Ok;
     }
 
-    ~ImportStack() {
-        for (auto& pair : m_Latests) {
+    ~ImportStack()
+    {
+        for (auto& pair : m_Latests)
+        {
             delete pair.second;
         }
     }
 
-    bool readNullObject() {
-        for (auto itr = m_LastAdded.rbegin(); itr != m_LastAdded.rend(); itr++) {
-            if ((*itr)->readNullObject()) {
+    bool readNullObject()
+    {
+        for (auto itr = m_LastAdded.rbegin(); itr != m_LastAdded.rend(); itr++)
+        {
+            if ((*itr)->readNullObject())
+            {
                 return true;
             }
         }
diff --git a/include/rive/importers/keyed_object_importer.hpp b/include/rive/importers/keyed_object_importer.hpp
index 1149e1c..fd7abf1 100644
--- a/include/rive/importers/keyed_object_importer.hpp
+++ b/include/rive/importers/keyed_object_importer.hpp
@@ -3,11 +3,13 @@
 
 #include "rive/importers/import_stack.hpp"
 
-namespace rive {
+namespace rive
+{
 class Core;
 class KeyedObject;
 class KeyedProperty;
-class KeyedObjectImporter : public ImportStackObject {
+class KeyedObjectImporter : public ImportStackObject
+{
 private:
     KeyedObject* m_KeyedObject;
 
diff --git a/include/rive/importers/keyed_property_importer.hpp b/include/rive/importers/keyed_property_importer.hpp
index 7aa8410..46096a9 100644
--- a/include/rive/importers/keyed_property_importer.hpp
+++ b/include/rive/importers/keyed_property_importer.hpp
@@ -3,12 +3,14 @@
 
 #include "rive/importers/import_stack.hpp"
 
-namespace rive {
+namespace rive
+{
 class Core;
 class KeyFrame;
 class KeyedProperty;
 class LinearAnimation;
-class KeyedPropertyImporter : public ImportStackObject {
+class KeyedPropertyImporter : public ImportStackObject
+{
 private:
     LinearAnimation* m_Animation;
     KeyedProperty* m_KeyedProperty;
diff --git a/include/rive/importers/layer_state_importer.hpp b/include/rive/importers/layer_state_importer.hpp
index 7836210..d11d39a 100644
--- a/include/rive/importers/layer_state_importer.hpp
+++ b/include/rive/importers/layer_state_importer.hpp
@@ -3,12 +3,14 @@
 
 #include "rive/importers/import_stack.hpp"
 
-namespace rive {
+namespace rive
+{
 class LayerState;
 class StateTransition;
 class BlendAnimation;
 
-class LayerStateImporter : public ImportStackObject {
+class LayerStateImporter : public ImportStackObject
+{
 private:
     LayerState* m_State;
 
diff --git a/include/rive/importers/linear_animation_importer.hpp b/include/rive/importers/linear_animation_importer.hpp
index 0146ef6..64a27bc 100644
--- a/include/rive/importers/linear_animation_importer.hpp
+++ b/include/rive/importers/linear_animation_importer.hpp
@@ -3,11 +3,13 @@
 
 #include "rive/importers/import_stack.hpp"
 
-namespace rive {
+namespace rive
+{
 class Core;
 class LinearAnimation;
 class KeyedObject;
-class LinearAnimationImporter : public ImportStackObject {
+class LinearAnimationImporter : public ImportStackObject
+{
 private:
     LinearAnimation* m_Animation;
 
diff --git a/include/rive/importers/state_machine_importer.hpp b/include/rive/importers/state_machine_importer.hpp
index 220f46d..f00ae45 100644
--- a/include/rive/importers/state_machine_importer.hpp
+++ b/include/rive/importers/state_machine_importer.hpp
@@ -3,12 +3,14 @@
 
 #include "rive/importers/import_stack.hpp"
 
-namespace rive {
+namespace rive
+{
 class StateMachineInput;
 class StateMachineLayer;
 class StateMachineListener;
 class StateMachine;
-class StateMachineImporter : public ImportStackObject {
+class StateMachineImporter : public ImportStackObject
+{
 private:
     StateMachine* m_StateMachine;
 
diff --git a/include/rive/importers/state_machine_layer_importer.hpp b/include/rive/importers/state_machine_layer_importer.hpp
index 8bab9a2..37f4de8 100644
--- a/include/rive/importers/state_machine_layer_importer.hpp
+++ b/include/rive/importers/state_machine_layer_importer.hpp
@@ -3,12 +3,14 @@
 
 #include "rive/importers/import_stack.hpp"
 
-namespace rive {
+namespace rive
+{
 class StateMachineLayer;
 class LayerState;
 class Artboard;
 
-class StateMachineLayerImporter : public ImportStackObject {
+class StateMachineLayerImporter : public ImportStackObject
+{
 private:
     StateMachineLayer* m_Layer;
     const Artboard* m_Artboard;
diff --git a/include/rive/importers/state_machine_listener_importer.hpp b/include/rive/importers/state_machine_listener_importer.hpp
index f86b31e..4d5660a 100644
--- a/include/rive/importers/state_machine_listener_importer.hpp
+++ b/include/rive/importers/state_machine_listener_importer.hpp
@@ -3,11 +3,13 @@
 
 #include "rive/importers/import_stack.hpp"
 
-namespace rive {
+namespace rive
+{
 class StateMachineListener;
 class StateMachine;
 class ListenerAction;
-class StateMachineListenerImporter : public ImportStackObject {
+class StateMachineListenerImporter : public ImportStackObject
+{
 private:
     StateMachineListener* m_StateMachineListener;
 
diff --git a/include/rive/importers/state_transition_importer.hpp b/include/rive/importers/state_transition_importer.hpp
index f6cb68f..f683cc2 100644
--- a/include/rive/importers/state_transition_importer.hpp
+++ b/include/rive/importers/state_transition_importer.hpp
@@ -3,11 +3,13 @@
 
 #include "rive/importers/import_stack.hpp"
 
-namespace rive {
+namespace rive
+{
 class StateTransition;
 class TransitionCondition;
 
-class StateTransitionImporter : public ImportStackObject {
+class StateTransitionImporter : public ImportStackObject
+{
 private:
     StateTransition* m_Transition;
 
diff --git a/include/rive/layout.hpp b/include/rive/layout.hpp
index 30f7922..3be95f0 100644
--- a/include/rive/layout.hpp
+++ b/include/rive/layout.hpp
@@ -1,9 +1,20 @@
 #ifndef _RIVE_LAYOUT_HPP_
 #define _RIVE_LAYOUT_HPP_
-namespace rive {
-enum class Fit : unsigned char { fill, contain, cover, fitWidth, fitHeight, none, scaleDown };
+namespace rive
+{
+enum class Fit : unsigned char
+{
+    fill,
+    contain,
+    cover,
+    fitWidth,
+    fitHeight,
+    none,
+    scaleDown
+};
 
-class Alignment {
+class Alignment
+{
 private:
     float m_X, m_Y;
 
diff --git a/include/rive/listener_type.hpp b/include/rive/listener_type.hpp
index df7a19e..f128b65 100644
--- a/include/rive/listener_type.hpp
+++ b/include/rive/listener_type.hpp
@@ -1,7 +1,9 @@
 #ifndef _RIVE_LISTENER_TYPE_HPP_
 #define _RIVE_LISTENER_TYPE_HPP_
-namespace rive {
-enum class ListenerType : int {
+namespace rive
+{
+enum class ListenerType : int
+{
     enter = 0,
     exit = 1,
     down = 2,
diff --git a/include/rive/math/aabb.hpp b/include/rive/math/aabb.hpp
index 0cf428a..0a7c400 100644
--- a/include/rive/math/aabb.hpp
+++ b/include/rive/math/aabb.hpp
@@ -7,8 +7,10 @@
 #include <cstddef>
 #include <limits>
 
-namespace rive {
-struct IAABB {
+namespace rive
+{
+struct IAABB
+{
     int32_t left, top, right, bottom;
 
     constexpr int width() const { return right - left; }
@@ -19,7 +21,8 @@
     IAABB offset(int dx, int dy) const { return {left + dx, top + dy, right + dx, bottom + dy}; }
 };
 
-class AABB {
+class AABB
+{
 public:
     float minX, minY, maxX, maxY;
 
@@ -27,13 +30,15 @@
     AABB(const AABB& o) : minX(o.minX), minY(o.minY), maxX(o.maxX), maxY(o.maxY) {}
 
     AABB(float minX, float minY, float maxX, float maxY) :
-        minX(minX), minY(minY), maxX(maxX), maxY(maxY) {}
+        minX(minX), minY(minY), maxX(maxX), maxY(maxY)
+    {}
 
     AABB(const IAABB& o) : AABB((float)o.left, (float)o.top, (float)o.right, (float)o.bottom) {}
 
     AABB(Span<Vec2D>); // computes the union of all points, or 0,0,0,0
 
-    bool operator==(const AABB& o) const {
+    bool operator==(const AABB& o) const
+    {
         return minX == o.minX && minY == o.minY && maxX == o.maxX && maxY == o.maxY;
     }
     bool operator!=(const AABB& o) const { return !(*this == o); }
@@ -48,7 +53,8 @@
     Vec2D size() const { return {width(), height()}; }
     Vec2D center() const { return {(minX + maxX) * 0.5f, (minY + maxY) * 0.5f}; }
 
-    AABB inset(float dx, float dy) const {
+    AABB inset(float dx, float dy) const
+    {
         AABB r = {minX + dx, minY + dy, maxX - dx, maxY - dy};
         assert(r.width() >= 0);
         assert(r.height() >= 0);
@@ -62,7 +68,8 @@
     /// Initialize an AABB to values that represent an invalid/collapsed
     /// AABB that can then expand to points that are added to it.
     ///
-    inline static AABB forExpansion() {
+    inline static AABB forExpansion()
+    {
         return AABB(std::numeric_limits<float>::max(),
                     std::numeric_limits<float>::max(),
                     -std::numeric_limits<float>::max(),
diff --git a/include/rive/math/circle_constant.hpp b/include/rive/math/circle_constant.hpp
index 6e3d867..e2e9a4b 100644
--- a/include/rive/math/circle_constant.hpp
+++ b/include/rive/math/circle_constant.hpp
@@ -3,7 +3,8 @@
 
 #include "rive/rive_types.hpp"
 
-namespace rive {
+namespace rive
+{
 constexpr float circleConstant = 0.552284749831f;
 constexpr float icircleConstant = 1.0f - circleConstant;
 } // namespace rive
diff --git a/include/rive/math/contour_measure.hpp b/include/rive/math/contour_measure.hpp
index 88d6388..d7b00f6 100644
--- a/include/rive/math/contour_measure.hpp
+++ b/include/rive/math/contour_measure.hpp
@@ -10,15 +10,18 @@
 #include "rive/refcnt.hpp"
 #include <utility>
 
-namespace rive {
+namespace rive
+{
 
-class ContourMeasure : public RefCnt<ContourMeasure> {
+class ContourMeasure : public RefCnt<ContourMeasure>
+{
 public:
     static constexpr unsigned kMaxDot30 = (1 << 30) - 1;
     static constexpr float kInvScaleD30 = 1.0f / (float)kMaxDot30;
 
     // Deliberately making this pack well (12 bytes)
-    struct Segment {
+    struct Segment
+    {
         float m_distance;       // total distance up to this point
         uint32_t m_ptIndex;     // index of the first point for this line/quad/cubic
         unsigned m_tValue : 30; // Dot30 t value for the end of this segment
@@ -48,14 +51,16 @@
     float length() const { return m_length; }
     bool isClosed() const { return m_isClosed; }
 
-    struct PosTan {
+    struct PosTan
+    {
         Vec2D pos, tan;
     };
     PosTan getPosTan(float distance) const;
 
     void getSegment(float startDistance, float endDistance, RawPath* dst, bool startWithMove) const;
 
-    Vec2D warp(Vec2D src) const {
+    Vec2D warp(Vec2D src) const
+    {
         const auto result = this->getPosTan(src.x);
         return {
             result.pos.x - result.tan.y * src.y,
@@ -66,7 +71,8 @@
     void dump() const;
 };
 
-class ContourMeasureIter {
+class ContourMeasureIter
+{
     RawPath m_optionalCopy;
     RawPath::Iter m_iter;
     RawPath::Iter m_end;
@@ -89,7 +95,8 @@
     // approximation for the curves actual length.
     static constexpr float kDefaultTolerance = 0.5f;
 
-    ContourMeasureIter(const RawPath& path, float tol = kDefaultTolerance) {
+    ContourMeasureIter(const RawPath& path, float tol = kDefaultTolerance)
+    {
         this->reset(path, tol);
     }
 
diff --git a/include/rive/math/cubic_utilities.hpp b/include/rive/math/cubic_utilities.hpp
index 4127fed..3450300 100644
--- a/include/rive/math/cubic_utilities.hpp
+++ b/include/rive/math/cubic_utilities.hpp
@@ -4,18 +4,21 @@
 #include "rive/math/vec2d.hpp"
 #include <algorithm>
 
-namespace rive {
+namespace rive
+{
 ///
 /// Utility functions for recursively subdividing a cubic.
 ///
-class CubicUtilities {
+class CubicUtilities
+{
 public:
     static void computeHull(const Vec2D& from,
                             const Vec2D& fromOut,
                             const Vec2D& toIn,
                             const Vec2D& to,
                             float t,
-                            Vec2D* hull) {
+                            Vec2D* hull)
+    {
         hull[0] = Vec2D::lerp(from, fromOut, t);
         hull[1] = Vec2D::lerp(fromOut, toIn, t);
         hull[2] = Vec2D::lerp(toIn, to, t);
@@ -26,7 +29,8 @@
         hull[5] = Vec2D::lerp(hull[3], hull[4], t);
     }
 
-    static bool tooFar(const Vec2D& a, const Vec2D& b, float threshold) {
+    static bool tooFar(const Vec2D& a, const Vec2D& b, float threshold)
+    {
         return std::max(std::abs(a.x - b.x), std::abs(a.y - b.y)) > threshold;
     }
 
@@ -34,14 +38,16 @@
                                  const Vec2D& fromOut,
                                  const Vec2D& toIn,
                                  const Vec2D& to,
-                                 float threshold) {
+                                 float threshold)
+    {
 
         Vec2D oneThird = Vec2D::lerp(from, to, 1.0f / 3.0f);
         Vec2D twoThird = Vec2D::lerp(from, to, 2.0f / 3.0f);
         return tooFar(fromOut, oneThird, threshold) || tooFar(toIn, twoThird, threshold);
     }
 
-    static float cubicAt(float t, float a, float b, float c, float d) {
+    static float cubicAt(float t, float a, float b, float c, float d)
+    {
         float ti = 1.0f - t;
         float value =
             ti * ti * ti * a + 3.0f * ti * ti * t * b + 3.0f * ti * t * t * c + t * t * t * d;
diff --git a/include/rive/math/hit_test.hpp b/include/rive/math/hit_test.hpp
index 243bb26..d2baeb4 100644
--- a/include/rive/math/hit_test.hpp
+++ b/include/rive/math/hit_test.hpp
@@ -13,9 +13,11 @@
 #include <cstdint>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 
-class HitTester {
+class HitTester
+{
     std::vector<int> m_DW; // width * height delta-windings
     Vec2D m_First, m_Prev;
     Vec2D m_offset;
diff --git a/include/rive/math/mat2d.hpp b/include/rive/math/mat2d.hpp
index 02f20f1..c798987 100644
--- a/include/rive/math/mat2d.hpp
+++ b/include/rive/math/mat2d.hpp
@@ -4,9 +4,11 @@
 #include "rive/math/vec2d.hpp"
 #include <cstddef>
 
-namespace rive {
+namespace rive
+{
 class TransformComponents;
-class Mat2D {
+class Mat2D
+{
 private:
     float m_Buffer[6];
 
@@ -14,7 +16,8 @@
     Mat2D() : m_Buffer{1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f} {}
     Mat2D(const Mat2D& copy) = default;
     Mat2D(float x1, float y1, float x2, float y2, float tx, float ty) :
-        m_Buffer{x1, y1, x2, y2, tx, ty} {}
+        m_Buffer{x1, y1, x2, y2, tx, ty}
+    {}
 
     inline const float* values() const { return m_Buffer; }
 
@@ -27,7 +30,8 @@
 
     void scaleByValues(float sx, float sy);
 
-    Mat2D& operator*=(const Mat2D& rhs) {
+    Mat2D& operator*=(const Mat2D& rhs)
+    {
         *this = Mat2D::multiply(*this, rhs);
         return *this;
     }
@@ -36,7 +40,8 @@
     // If returns false, result is unchnaged.
     bool invert(Mat2D* result) const;
 
-    Mat2D invertOrIdentity() const {
+    Mat2D invertOrIdentity() const
+    {
         Mat2D inverse;          // initialized to identity
         (void)invert(&inverse); // inverse is unchanged if invert() fails
         return inverse;
@@ -65,7 +70,8 @@
     void ty(float value) { m_Buffer[5] = value; }
 };
 
-inline Vec2D operator*(const Mat2D& m, Vec2D v) {
+inline Vec2D operator*(const Mat2D& m, Vec2D v)
+{
     return {
         m[0] * v.x + m[2] * v.y + m[4],
         m[1] * v.x + m[3] * v.y + m[5],
@@ -74,7 +80,8 @@
 
 inline Mat2D operator*(const Mat2D& a, const Mat2D& b) { return Mat2D::multiply(a, b); }
 
-inline bool operator==(const Mat2D& a, const Mat2D& b) {
+inline bool operator==(const Mat2D& a, const Mat2D& b)
+{
     return a[0] == b[0] && a[1] == b[1] && a[2] == b[2] && a[3] == b[3] && a[4] == b[4] &&
            a[5] == b[5];
 }
diff --git a/include/rive/math/math_types.hpp b/include/rive/math/math_types.hpp
index 0f3d201..4785fc9 100644
--- a/include/rive/math/math_types.hpp
+++ b/include/rive/math/math_types.hpp
@@ -8,9 +8,11 @@
 #include "rive/rive_types.hpp"
 #include <cmath>
 
-namespace rive {
+namespace rive
+{
 
-namespace math {
+namespace math
+{
 constexpr float PI = 3.14159265f;
 }
 
diff --git a/include/rive/math/path_types.hpp b/include/rive/math/path_types.hpp
index 5be3c58..010a19d 100644
--- a/include/rive/math/path_types.hpp
+++ b/include/rive/math/path_types.hpp
@@ -7,14 +7,17 @@
 
 #include "rive/rive_types.hpp"
 
-namespace rive {
+namespace rive
+{
 
-enum class FillRule {
+enum class FillRule
+{
     nonZero,
     evenOdd,
 };
 
-enum class PathDirection {
+enum class PathDirection
+{
     cw,
     ccw,
     // aliases
@@ -22,7 +25,8 @@
     counterclockwise = ccw,
 };
 
-enum class PathVerb : uint8_t {
+enum class PathVerb : uint8_t
+{
     // These deliberately match Skia's values
     move = 0,
     line = 1,
diff --git a/include/rive/math/raw_path.hpp b/include/rive/math/raw_path.hpp
index 7514e93..ee6affc 100644
--- a/include/rive/math/raw_path.hpp
+++ b/include/rive/math/raw_path.hpp
@@ -16,11 +16,13 @@
 #include <cstdint>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 
 class CommandPath;
 
-class RawPath {
+class RawPath
+{
 public:
     bool operator==(const RawPath& o) const;
     bool operator!=(const RawPath& o) const { return !(*this == o); }
@@ -53,7 +55,8 @@
     Span<const PathVerb> verbs() const { return m_Verbs; }
     Span<PathVerb> verbs() { return m_Verbs; }
 
-    Span<const uint8_t> verbsU8() const {
+    Span<const uint8_t> verbsU8() const
+    {
         const uint8_t* ptr = (const uint8_t*)m_Verbs.data();
         return Span<const uint8_t>(ptr, m_Verbs.size());
     }
@@ -63,7 +66,8 @@
     void moveTo(float x, float y) { move({x, y}); }
     void lineTo(float x, float y) { line({x, y}); }
     void quadTo(float x, float y, float x1, float y1) { quad({x, y}, {x1, y1}); }
-    void cubicTo(float x, float y, float x1, float y1, float x2, float y2) {
+    void cubicTo(float x, float y, float x1, float y1, float x2, float y2)
+    {
         cubic({x, y}, {x1, y1}, {x2, y2});
     }
 
@@ -79,7 +83,8 @@
     //
     //   for (auto [verb, pts] : rawPath) { ... }
     //
-    class Iter {
+    class Iter
+    {
     public:
         Iter() = default;
         Iter(const PathVerb* verbs, const Vec2D* pts) : m_verbs(verbs), m_pts(pts) {}
@@ -89,25 +94,34 @@
 
         PathVerb peekVerb() const { return *m_verbs; }
 
-        std::tuple<const PathVerb, const Vec2D* const> operator*() const {
+        std::tuple<const PathVerb, const Vec2D* const> operator*() const
+        {
             PathVerb verb = peekVerb();
             return {verb, m_pts + PtsBacksetForVerb(verb)};
         }
 
-        Iter& operator++() { // ++iter
+        Iter& operator++()
+        { // ++iter
             m_pts += PtsAdvanceAfterVerb(*m_verbs++);
             return *this;
         }
 
     private:
         // How much should we advance pts after encountering this verb?
-        constexpr static int PtsAdvanceAfterVerb(PathVerb verb) {
-            switch (verb) {
-                case PathVerb::move: return 1;
-                case PathVerb::line: return 1;
-                case PathVerb::quad: return 2;
-                case PathVerb::cubic: return 3;
-                case PathVerb::close: return 0;
+        constexpr static int PtsAdvanceAfterVerb(PathVerb verb)
+        {
+            switch (verb)
+            {
+                case PathVerb::move:
+                    return 1;
+                case PathVerb::line:
+                    return 1;
+                case PathVerb::quad:
+                    return 2;
+                case PathVerb::cubic:
+                    return 3;
+                case PathVerb::close:
+                    return 0;
             }
             RIVE_UNREACHABLE;
         }
@@ -116,13 +130,20 @@
         // peeking backwards from the current point, which works as long as there is always a
         // PathVerb::move before any geometry. (injectImplicitMoveToIfNeeded() guarantees this
         // to be the case.)
-        constexpr static int PtsBacksetForVerb(PathVerb verb) {
-            switch (verb) {
-                case PathVerb::move: return 0;
-                case PathVerb::line: return -1;
-                case PathVerb::quad: return -1;
-                case PathVerb::cubic: return -1;
-                case PathVerb::close: return -1;
+        constexpr static int PtsBacksetForVerb(PathVerb verb)
+        {
+            switch (verb)
+            {
+                case PathVerb::move:
+                    return 0;
+                case PathVerb::line:
+                    return -1;
+                case PathVerb::quad:
+                    return -1;
+                case PathVerb::cubic:
+                    return -1;
+                case PathVerb::close:
+                    return -1;
             }
             RIVE_UNREACHABLE;
         }
@@ -133,16 +154,29 @@
     Iter begin() const { return {m_Verbs.data(), m_Points.data()}; }
     Iter end() const { return {m_Verbs.data() + m_Verbs.size(), nullptr}; }
 
-    template <typename Handler> RawPath morph(Handler proc) const {
+    template <typename Handler> RawPath morph(Handler proc) const
+    {
         RawPath dst;
         // todo: dst.reserve(src.ptCount, src.verbCount);
-        for (auto [verb, pts] : *this) {
-            switch (verb) {
-                case PathVerb::move: dst.move(proc(pts[0])); break;
-                case PathVerb::line: dst.line(proc(pts[1])); break;
-                case PathVerb::quad: dst.quad(proc(pts[1]), proc(pts[2])); break;
-                case PathVerb::cubic: dst.cubic(proc(pts[1]), proc(pts[2]), proc(pts[3])); break;
-                case PathVerb::close: dst.close(); break;
+        for (auto [verb, pts] : *this)
+        {
+            switch (verb)
+            {
+                case PathVerb::move:
+                    dst.move(proc(pts[0]));
+                    break;
+                case PathVerb::line:
+                    dst.line(proc(pts[1]));
+                    break;
+                case PathVerb::quad:
+                    dst.quad(proc(pts[1]), proc(pts[2]));
+                    break;
+                case PathVerb::cubic:
+                    dst.cubic(proc(pts[1]), proc(pts[2]), proc(pts[3]));
+                    break;
+                case PathVerb::close:
+                    dst.close();
+                    break;
             }
         }
         return dst;
diff --git a/include/rive/math/raw_path_utils.hpp b/include/rive/math/raw_path_utils.hpp
index d0da2c3..bbbae80 100644
--- a/include/rive/math/raw_path_utils.hpp
+++ b/include/rive/math/raw_path_utils.hpp
@@ -7,7 +7,8 @@
 
 #include "rive/math/vec2d.hpp"
 
-namespace rive {
+namespace rive
+{
 static inline Vec2D two(Vec2D v) { return v + v; }
 
 // Caches the setup to evaluate a quadratic bezier. Useful if you
@@ -28,7 +29,8 @@
 
 // Caches the setup to evaluate a cubic bezier. Useful if you
 // want to evaluate the save curve at multiple t values.
-struct EvalCubic {
+struct EvalCubic
+{
     const Vec2D a, b, c, d; // at^3 + bt^2 + ct + d
 
     // pts are the 4 cubic bezier control points
@@ -36,7 +38,8 @@
         a(pts[3] + 3 * (pts[1] - pts[2]) - pts[0]),
         b(3 * (pts[2] - two(pts[1]) + pts[0])),
         c(3 * (pts[1] - pts[0])),
-        d(pts[0]) {}
+        d(pts[0])
+    {}
 
     Vec2D operator()(float t) const { return ((a * t + b) * t + c) * t + d; }
 };
diff --git a/include/rive/math/simd.hpp b/include/rive/math/simd.hpp
index adbbd7d..3d4e5a5 100644
--- a/include/rive/math/simd.hpp
+++ b/include/rive/math/simd.hpp
@@ -18,8 +18,10 @@
 
 #define SIMD_ALWAYS_INLINE inline __attribute__((always_inline))
 
-namespace rive {
-namespace simd {
+namespace rive
+{
+namespace simd
+{
 
 // The GLSL spec uses "gvec" to denote a vector of unspecified type.
 template <typename T, int N>
@@ -29,19 +31,22 @@
 
 // Similar to std::min(), with a noteworthy difference:
 // If a[i] or b[i] is NaN and the other is not, returns whichever is _not_ NaN.
-template <typename T, int N> SIMD_ALWAYS_INLINE gvec<T, N> min(gvec<T, N> a, gvec<T, N> b) {
+template <typename T, int N> SIMD_ALWAYS_INLINE gvec<T, N> min(gvec<T, N> a, gvec<T, N> b)
+{
     return __builtin_elementwise_min(a, b);
 }
 
 // Similar to std::max(), with a noteworthy difference:
 // If a[i] or b[i] is NaN and the other is not, returns whichever is _not_ NaN.
-template <typename T, int N> SIMD_ALWAYS_INLINE gvec<T, N> max(gvec<T, N> a, gvec<T, N> b) {
+template <typename T, int N> SIMD_ALWAYS_INLINE gvec<T, N> max(gvec<T, N> a, gvec<T, N> b)
+{
     return __builtin_elementwise_max(a, b);
 }
 
 // Returns the absolute value of x per element, with one exception:
 // If x[i] is an integer type and equal to the minimum representable value, returns x[i].
-template <typename T, int N> SIMD_ALWAYS_INLINE gvec<T, N> abs(gvec<T, N> x) {
+template <typename T, int N> SIMD_ALWAYS_INLINE gvec<T, N> abs(gvec<T, N> x)
+{
     return __builtin_elementwise_abs(x);
 }
 
@@ -52,10 +57,12 @@
 //
 
 // Returns true if all elements in x are equal to 0.
-template <int N> SIMD_ALWAYS_INLINE bool any(gvec<int32_t, N> x) {
+template <int N> SIMD_ALWAYS_INLINE bool any(gvec<int32_t, N> x)
+{
     // This particular logic structure gets decent codegen in clang.
     // TODO: __builtin_reduce_or(x) once it's implemented in the compiler.
-    for (int i = 0; i < N; ++i) {
+    for (int i = 0; i < N; ++i)
+    {
         if (x[i])
             return true;
     }
@@ -63,7 +70,8 @@
 }
 
 // Returns true if all elements in x are equal to ~0.
-template <int N> SIMD_ALWAYS_INLINE bool all(gvec<int32_t, N> x) {
+template <int N> SIMD_ALWAYS_INLINE bool all(gvec<int32_t, N> x)
+{
     // In vector, true is represented by -1 exactly, so we use ~x for "not".
     // TODO: __builtin_reduce_and(x) once it's implemented in the compiler.
     return !any(~x);
@@ -71,7 +79,8 @@
 
 ////// Loading and storing //////
 
-template <typename T, int N> SIMD_ALWAYS_INLINE gvec<T, N> load(const T* ptr) {
+template <typename T, int N> SIMD_ALWAYS_INLINE gvec<T, N> load(const T* ptr)
+{
     gvec<T, N> vec;
     __builtin_memcpy(&vec, ptr, sizeof(vec));
     return vec;
@@ -83,7 +92,8 @@
 SIMD_ALWAYS_INLINE gvec<uint32_t, 2> load2ui(const uint32_t* ptr) { return load<uint32_t, 2>(ptr); }
 SIMD_ALWAYS_INLINE gvec<uint32_t, 4> load4ui(const uint32_t* ptr) { return load<uint32_t, 4>(ptr); }
 
-template <typename T, int N> SIMD_ALWAYS_INLINE void store(T* ptr, gvec<T, N> vec) {
+template <typename T, int N> SIMD_ALWAYS_INLINE void store(T* ptr, gvec<T, N> vec)
+{
     __builtin_memcpy(ptr, &vec, sizeof(vec));
 }
 
@@ -92,7 +102,8 @@
 
 #undef SIMD_ALWAYS_INLINE
 
-namespace rive {
+namespace rive
+{
 
 template <int N> using vec = simd::gvec<float, N>;
 using float2 = vec<2>;
diff --git a/include/rive/math/transform_components.hpp b/include/rive/math/transform_components.hpp
index b6190d5..d3726da 100644
--- a/include/rive/math/transform_components.hpp
+++ b/include/rive/math/transform_components.hpp
@@ -3,8 +3,10 @@
 
 #include "rive/math/vec2d.hpp"
 
-namespace rive {
-class TransformComponents {
+namespace rive
+{
+class TransformComponents
+{
 private:
     float m_X;
     float m_Y;
@@ -15,14 +17,16 @@
 
 public:
     TransformComponents() :
-        m_X(0.0f), m_Y(0.0f), m_ScaleX(1.0f), m_ScaleY(1.0f), m_Rotation(0.0f), m_Skew(0.0f) {}
+        m_X(0.0f), m_Y(0.0f), m_ScaleX(1.0f), m_ScaleY(1.0f), m_Rotation(0.0f), m_Skew(0.0f)
+    {}
     TransformComponents(const TransformComponents& copy) :
         m_X(copy.m_X),
         m_Y(copy.m_Y),
         m_ScaleX(copy.m_ScaleX),
         m_ScaleY(copy.m_ScaleY),
         m_Rotation(copy.m_Rotation),
-        m_Skew(copy.m_Skew) {}
+        m_Skew(copy.m_Skew)
+    {}
 
     float x() const { return m_X; }
     void x(float value) { m_X = value; }
@@ -40,7 +44,8 @@
     Vec2D translation() const { return {m_X, m_Y}; }
     Vec2D scale() const { return {m_ScaleX, m_ScaleY}; }
 
-    TransformComponents& operator=(const TransformComponents& a) {
+    TransformComponents& operator=(const TransformComponents& a)
+    {
         m_X = a.m_X;
         m_Y = a.m_Y;
         m_ScaleX = a.m_ScaleX;
diff --git a/include/rive/math/vec2d.hpp b/include/rive/math/vec2d.hpp
index 58bb129..c173bd1 100644
--- a/include/rive/math/vec2d.hpp
+++ b/include/rive/math/vec2d.hpp
@@ -3,9 +3,11 @@
 
 #include "rive/rive_types.hpp"
 
-namespace rive {
+namespace rive
+{
 class Mat2D;
-class Vec2D {
+class Vec2D
+{
 public:
     float x, y;
 
@@ -18,7 +20,8 @@
     Vec2D normalized() const;
 
     // Normalize this Vec, and return its previous length
-    float normalizeLength() {
+    float normalizeLength()
+    {
         const float len = this->length();
         x /= len;
         y /= len;
@@ -27,12 +30,14 @@
 
     Vec2D operator-() const { return {-x, -y}; }
 
-    void operator*=(float s) {
+    void operator*=(float s)
+    {
         x *= s;
         y *= s;
     }
 
-    void operator/=(float s) {
+    void operator/=(float s)
+    {
         x /= s;
         y /= s;
     }
@@ -45,7 +50,8 @@
 
     static float dot(Vec2D a, Vec2D b) { return a.x * b.x + a.y * b.y; }
     static float cross(Vec2D a, Vec2D b) { return a.x * b.y - a.y * b.x; }
-    static Vec2D scaleAndAdd(Vec2D a, Vec2D b, float scale) {
+    static Vec2D scaleAndAdd(Vec2D a, Vec2D b, float scale)
+    {
         return {
             a.x + b.x * scale,
             a.y + b.y * scale,
@@ -54,12 +60,14 @@
     static float distance(const Vec2D& a, const Vec2D& b) { return (a - b).length(); }
     static float distanceSquared(const Vec2D& a, const Vec2D& b) { return (a - b).lengthSquared(); }
 
-    Vec2D& operator+=(Vec2D v) {
+    Vec2D& operator+=(Vec2D v)
+    {
         x += v.x;
         y += v.y;
         return *this;
     }
-    Vec2D& operator-=(Vec2D v) {
+    Vec2D& operator-=(Vec2D v)
+    {
         x -= v.x;
         y -= v.y;
         return *this;
diff --git a/include/rive/nested_animation.hpp b/include/rive/nested_animation.hpp
index 77b2906..dae7877 100644
--- a/include/rive/nested_animation.hpp
+++ b/include/rive/nested_animation.hpp
@@ -2,10 +2,12 @@
 #define _RIVE_NESTED_ANIMATION_HPP_
 #include "rive/generated/nested_animation_base.hpp"
 #include <stdio.h>
-namespace rive {
+namespace rive
+{
 class ArtboardInstance;
 
-class NestedAnimation : public NestedAnimationBase {
+class NestedAnimation : public NestedAnimationBase
+{
 public:
     StatusCode onAddedDirty(CoreContext* context) override;
 
diff --git a/include/rive/nested_artboard.hpp b/include/rive/nested_artboard.hpp
index ff70e99..befffb8 100644
--- a/include/rive/nested_artboard.hpp
+++ b/include/rive/nested_artboard.hpp
@@ -6,10 +6,12 @@
 #include "rive/span.hpp"
 #include <stdio.h>
 
-namespace rive {
+namespace rive
+{
 class ArtboardInstance;
 class NestedAnimation;
-class NestedArtboard : public NestedArtboardBase {
+class NestedArtboard : public NestedArtboardBase
+{
 
 private:
     Artboard* m_Artboard = nullptr;               // might point to m_Instance, and might not
diff --git a/include/rive/node.hpp b/include/rive/node.hpp
index 91df9f3..90de2fb 100644
--- a/include/rive/node.hpp
+++ b/include/rive/node.hpp
@@ -2,9 +2,11 @@
 #define _RIVE_NODE_HPP_
 #include "rive/generated/node_base.hpp"
 
-namespace rive {
+namespace rive
+{
 /// A Rive Node
-class Node : public NodeBase {
+class Node : public NodeBase
+{
 protected:
     void xChanged() override;
     void yChanged() override;
diff --git a/include/rive/pointer_event.hpp b/include/rive/pointer_event.hpp
index 141d830..da1bb55 100644
--- a/include/rive/pointer_event.hpp
+++ b/include/rive/pointer_event.hpp
@@ -3,15 +3,18 @@
 
 #include "rive/math/vec2d.hpp"
 
-namespace rive {
+namespace rive
+{
 
-enum class PointerEventType {
+enum class PointerEventType
+{
     down, // The button has gone from up to down
     move, // The pointer's position has changed
     up,   // The button has gone from down to up
 };
 
-struct PointerEvent {
+struct PointerEvent
+{
     PointerEventType m_Type;
     Vec2D m_Position;
     int m_PointerIndex;
diff --git a/include/rive/refcnt.hpp b/include/rive/refcnt.hpp
index d11104c..55f0ec8 100644
--- a/include/rive/refcnt.hpp
+++ b/include/rive/refcnt.hpp
@@ -27,9 +27,11 @@
  *  Both of these inspired by Skia's SkRefCnt and sk_sp
  */
 
-namespace rive {
+namespace rive
+{
 
-template <typename T> class RefCnt {
+template <typename T> class RefCnt
+{
 public:
     RefCnt() : m_refcnt(1) {}
 
@@ -37,8 +39,10 @@
 
     void ref() const { (void)m_refcnt.fetch_add(+1, std::memory_order_relaxed); }
 
-    void unref() const {
-        if (1 == m_refcnt.fetch_add(-1, std::memory_order_acq_rel)) {
+    void unref() const
+    {
+        if (1 == m_refcnt.fetch_add(-1, std::memory_order_acq_rel))
+        {
 #ifndef NDEBUG
             // we restore the "1" in debug builds just to make our destructor happy
             (void)m_refcnt.fetch_add(+1, std::memory_order_relaxed);
@@ -60,22 +64,27 @@
     RefCnt& operator=(const RefCnt&) = delete;
 };
 
-template <typename T> static inline T* safe_ref(T* obj) {
-    if (obj) {
+template <typename T> static inline T* safe_ref(T* obj)
+{
+    if (obj)
+    {
         obj->ref();
     }
     return obj;
 }
 
-template <typename T> static inline void safe_unref(T* obj) {
-    if (obj) {
+template <typename T> static inline void safe_unref(T* obj)
+{
+    if (obj)
+    {
         obj->unref();
     }
 }
 
 // rcp : smart point template for holding subclasses of RefCnt
 
-template <typename T> class rcp {
+template <typename T> class rcp
+{
 public:
     constexpr rcp() : m_ptr(nullptr) {}
     constexpr rcp(std::nullptr_t) : m_ptr(nullptr) {}
@@ -89,24 +98,29 @@
      */
     ~rcp() { safe_unref(m_ptr); }
 
-    rcp<T>& operator=(std::nullptr_t) {
+    rcp<T>& operator=(std::nullptr_t)
+    {
         this->reset();
         return *this;
     }
 
-    rcp<T>& operator=(const rcp<T>& other) {
-        if (this != &other) {
+    rcp<T>& operator=(const rcp<T>& other)
+    {
+        if (this != &other)
+        {
             this->reset(safe_ref(other.get()));
         }
         return *this;
     }
 
-    rcp<T>& operator=(rcp<T>&& other) {
+    rcp<T>& operator=(rcp<T>&& other)
+    {
         this->reset(other.release());
         return *this;
     }
 
-    T& operator*() const {
+    T& operator*() const
+    {
         assert(this->get() != nullptr);
         return *this->get();
     }
@@ -118,7 +132,8 @@
 
     // Unrefs the current pointer, and accepts the new pointer, but
     // DOES NOT increment ownership of the new pointer.
-    void reset(T* ptr = nullptr) {
+    void reset(T* ptr = nullptr)
+    {
         // Calling m_ptr->unref() may call this->~() or this->reset(T*).
         // http://wg21.cmeerw.net/lwg/issue998
         // http://wg21.cmeerw.net/lwg/issue2262
@@ -129,7 +144,8 @@
 
     // This returns the bare point WITHOUT CHANGING ITS REFCNT, but removes it
     // from this object, so the caller must manually manage its count.
-    T* release() {
+    T* release()
+    {
         T* ptr = m_ptr;
         m_ptr = nullptr;
         return ptr;
@@ -143,7 +159,8 @@
 
 template <typename T> inline void swap(rcp<T>& a, rcp<T>& b) { a.swap(b); }
 
-template <typename T, typename... Args> rcp<T> inline make_rcp(Args&&... args) {
+template <typename T, typename... Args> rcp<T> inline make_rcp(Args&&... args)
+{
     return rcp<T>(new T(std::forward<Args>(args)...));
 }
 
@@ -151,19 +168,23 @@
 
 template <typename T> inline bool operator==(const rcp<T>& a, std::nullptr_t) { return !a; }
 template <typename T> inline bool operator==(std::nullptr_t, const rcp<T>& b) { return !b; }
-template <typename T, typename U> inline bool operator==(const rcp<T>& a, const rcp<U>& b) {
+template <typename T, typename U> inline bool operator==(const rcp<T>& a, const rcp<U>& b)
+{
     return a.get() == b.get();
 }
 
 // != variants
 
-template <typename T> inline bool operator!=(const rcp<T>& a, std::nullptr_t) {
+template <typename T> inline bool operator!=(const rcp<T>& a, std::nullptr_t)
+{
     return static_cast<bool>(a);
 }
-template <typename T> inline bool operator!=(std::nullptr_t, const rcp<T>& b) {
+template <typename T> inline bool operator!=(std::nullptr_t, const rcp<T>& b)
+{
     return static_cast<bool>(b);
 }
-template <typename T, typename U> inline bool operator!=(const rcp<T>& a, const rcp<U>& b) {
+template <typename T, typename U> inline bool operator!=(const rcp<T>& a, const rcp<U>& b)
+{
     return a.get() != b.get();
 }
 
diff --git a/include/rive/relative_local_asset_resolver.hpp b/include/rive/relative_local_asset_resolver.hpp
index 5679534..fb4a74e 100644
--- a/include/rive/relative_local_asset_resolver.hpp
+++ b/include/rive/relative_local_asset_resolver.hpp
@@ -6,27 +6,32 @@
 #include <cstdio>
 #include <string>
 
-namespace rive {
+namespace rive
+{
 class FileAsset;
 class Factory;
 
 /// An implementation of FileAssetResolver which finds the assets in a local
 /// path relative to the original .riv file looking for them.
-class RelativeLocalAssetResolver : public FileAssetResolver {
+class RelativeLocalAssetResolver : public FileAssetResolver
+{
 private:
     std::string m_Path;
     Factory* m_Factory;
 
 public:
-    RelativeLocalAssetResolver(std::string filename, Factory* factory) : m_Factory(factory) {
+    RelativeLocalAssetResolver(std::string filename, Factory* factory) : m_Factory(factory)
+    {
         std::size_t finalSlash = filename.rfind('/');
 
-        if (finalSlash != std::string::npos) {
+        if (finalSlash != std::string::npos)
+        {
             m_Path = filename.substr(0, finalSlash + 1);
         }
     }
 
-    void loadContents(FileAsset& asset) override {
+    void loadContents(FileAsset& asset) override
+    {
         std::string filename = m_Path + asset.uniqueFilename();
         FILE* fp = fopen(filename.c_str(), "rb");
 
@@ -34,7 +39,8 @@
         const size_t length = ftell(fp);
         fseek(fp, 0, SEEK_SET);
         uint8_t* bytes = new uint8_t[length];
-        if (fread(bytes, 1, length, fp) == length) {
+        if (fread(bytes, 1, length, fp) == length)
+        {
             asset.decode(Span<const uint8_t>(bytes, length), m_Factory);
         }
         delete[] bytes;
diff --git a/include/rive/render_text.hpp b/include/rive/render_text.hpp
index b9c35a1..d7827ed 100644
--- a/include/rive/render_text.hpp
+++ b/include/rive/render_text.hpp
@@ -10,7 +10,8 @@
 #include "rive/span.hpp"
 #include "rive/simple_array.hpp"
 
-namespace rive {
+namespace rive
+{
 
 using Unichar = uint32_t;
 using GlyphID = uint16_t;
@@ -18,11 +19,13 @@
 struct RenderTextRun;
 struct RenderGlyphRun;
 
-class RenderFont : public RefCnt<RenderFont> {
+class RenderFont : public RefCnt<RenderFont>
+{
 public:
     virtual ~RenderFont() {}
 
-    struct LineMetrics {
+    struct LineMetrics
+    {
         float ascent, descent;
     };
 
@@ -32,7 +35,8 @@
     // -- may only be needed by Editor
     // -- so it may be removed from here later
     //
-    struct Axis {
+    struct Axis
+    {
         uint32_t tag;
         float min;
         float def; // default value
@@ -46,7 +50,8 @@
     //
     virtual std::vector<Axis> getAxes() const = 0;
 
-    struct Coord {
+    struct Coord
+    {
         uint32_t axis;
         float value;
     };
@@ -80,20 +85,24 @@
     const LineMetrics m_LineMetrics;
 };
 
-struct RenderTextRun {
+struct RenderTextRun
+{
     rcp<RenderFont> font;
     float size;
     uint32_t unicharCount;
 };
 
-struct RenderGlyphRun {
+struct RenderGlyphRun
+{
     RenderGlyphRun(size_t glyphCount = 0) :
-        glyphs(glyphCount), textIndices(glyphCount), xpos(glyphCount + 1) {}
+        glyphs(glyphCount), textIndices(glyphCount), xpos(glyphCount + 1)
+    {}
 
     RenderGlyphRun(rive::SimpleArray<GlyphID> glyphIds,
                    rive::SimpleArray<uint32_t> offsets,
                    rive::SimpleArray<float> xs) :
-        glyphs(glyphIds), textIndices(offsets), xpos(xs) {}
+        glyphs(glyphIds), textIndices(offsets), xpos(xs)
+    {}
 
     rcp<RenderFont> font;
     float size;
diff --git a/include/rive/renderer.hpp b/include/rive/renderer.hpp
index b4a72eb..46afa23 100644
--- a/include/rive/renderer.hpp
+++ b/include/rive/renderer.hpp
@@ -20,14 +20,16 @@
 #include <stdio.h>
 #include <cstdint>
 
-namespace rive {
+namespace rive
+{
 class Vec2D;
 
 // Helper that computes a matrix to "align" content (source) to fit inside frame (destination).
 Mat2D computeAlignment(Fit, Alignment, const AABB& frame, const AABB& content);
 
 // A render buffer holds an immutable array of values
-class RenderBuffer : public RefCnt<RenderBuffer> {
+class RenderBuffer : public RefCnt<RenderBuffer>
+{
     const size_t m_Count;
 
 public:
@@ -37,7 +39,11 @@
     size_t count() const { return m_Count; }
 };
 
-enum class RenderPaintStyle { stroke, fill };
+enum class RenderPaintStyle
+{
+    stroke,
+    fill
+};
 
 /*
  *  Base class for Render objects that specify the src colors.
@@ -47,13 +53,15 @@
  *  It is common that a shader may be created with a 'localMatrix'. If this is
  *  not null, then it is applied to the shader's domain before the Renderer's CTM.
  */
-class RenderShader : public RefCnt<RenderShader> {
+class RenderShader : public RefCnt<RenderShader>
+{
 public:
     RenderShader();
     virtual ~RenderShader();
 };
 
-class RenderPaint {
+class RenderPaint
+{
 public:
     RenderPaint();
     virtual ~RenderPaint();
@@ -68,7 +76,8 @@
     virtual void invalidateStroke() = 0;
 };
 
-class RenderImage {
+class RenderImage
+{
 protected:
     int m_Width = 0;
     int m_Height = 0;
@@ -84,20 +93,23 @@
     const Mat2D& uvTransform() const { return m_uvTransform; }
 };
 
-class RenderPath : public CommandPath {
+class RenderPath : public CommandPath
+{
 public:
     RenderPath();
     ~RenderPath() override;
 
     RenderPath* renderPath() override { return this; }
-    void addPath(CommandPath* path, const Mat2D& transform) override {
+    void addPath(CommandPath* path, const Mat2D& transform) override
+    {
         addRenderPath(path->renderPath(), transform);
     }
 
     virtual void addRenderPath(RenderPath* path, const Mat2D& transform) = 0;
 };
 
-class Renderer {
+class Renderer
+{
 public:
     virtual ~Renderer() {}
     virtual void save() = 0;
@@ -119,7 +131,8 @@
     void scale(float sx, float sy);
     void rotate(float radians);
 
-    void align(Fit fit, Alignment alignment, const AABB& frame, const AABB& content) {
+    void align(Fit fit, Alignment alignment, const AABB& frame, const AABB& content)
+    {
         transform(computeAlignment(fit, alignment, frame, content));
     }
 };
diff --git a/include/rive/renderer_utils.hpp b/include/rive/renderer_utils.hpp
index 47bcc9c..5850689 100644
--- a/include/rive/renderer_utils.hpp
+++ b/include/rive/renderer_utils.hpp
@@ -9,20 +9,25 @@
 #include "rive/core/type_conversions.hpp"
 #include <string>
 
-template <size_t N, typename T> class AutoSTArray {
+template <size_t N, typename T> class AutoSTArray
+{
     T m_storage[N];
     T* m_ptr;
     const size_t m_count;
 
 public:
-    AutoSTArray(size_t n) : m_count(n) {
+    AutoSTArray(size_t n) : m_count(n)
+    {
         m_ptr = m_storage;
-        if (n > N) {
+        if (n > N)
+        {
             m_ptr = new T[n];
         }
     }
-    ~AutoSTArray() {
-        if (m_ptr != m_storage) {
+    ~AutoSTArray()
+    {
+        if (m_ptr != m_storage)
+        {
             delete[] m_ptr;
         }
     }
@@ -32,17 +37,20 @@
 
     T* data() const { return m_ptr; }
 
-    T& operator[](size_t index) {
+    T& operator[](size_t index)
+    {
         assert(index < m_count);
         return m_ptr[index];
     }
 };
 
-constexpr inline uint32_t make_tag(uint8_t a, uint8_t b, uint8_t c, uint8_t d) {
+constexpr inline uint32_t make_tag(uint8_t a, uint8_t b, uint8_t c, uint8_t d)
+{
     return (a << 24) | (b << 16) | (c << 8) | d;
 }
 
-static inline std::string tag2str(uint32_t tag) {
+static inline std::string tag2str(uint32_t tag)
+{
     std::string str = "abcd";
     str[0] = (tag >> 24) & 0xFF;
     str[1] = (tag >> 16) & 0xFF;
diff --git a/include/rive/rive_counter.hpp b/include/rive/rive_counter.hpp
index 09e83a0..a378924 100644
--- a/include/rive/rive_counter.hpp
+++ b/include/rive/rive_counter.hpp
@@ -7,10 +7,13 @@
 
 #include "rive/rive_types.hpp"
 
-namespace rive {
+namespace rive
+{
 
-struct Counter {
-    enum Type {
+struct Counter
+{
+    enum Type
+    {
         kFile,
         kArtboardInstance,
         kLinearAnimationInstance,
@@ -28,7 +31,8 @@
     static constexpr int kNumTypes = Type::kLastType + 1;
     static int counts[kNumTypes];
 
-    static void update(Type ct, int delta) {
+    static void update(Type ct, int delta)
+    {
         assert(delta == 1 || delta == -1);
         counts[ct] += delta;
         assert(counts[ct] >= 0);
diff --git a/include/rive/runtime_header.hpp b/include/rive/runtime_header.hpp
index cbe63e0..122f298 100644
--- a/include/rive/runtime_header.hpp
+++ b/include/rive/runtime_header.hpp
@@ -4,13 +4,15 @@
 #include "rive/core/binary_reader.hpp"
 #include <unordered_map>
 
-namespace rive {
+namespace rive
+{
 /// Rive file runtime header. The header is fonud at the beginning of every
 /// Rive runtime file, and begins with a specific 4-byte format: "RIVE".
 /// This is followed by the major and minor version of Rive used to create
 /// the file. Finally the owner and file ids are at the end of header; these
 /// unsigned integers may be zero.
-class RuntimeHeader {
+class RuntimeHeader
+{
 private:
     static constexpr char fingerprint[] = "RIVE";
 
@@ -27,9 +29,11 @@
     /// @returns the file's id; may be zero
     int fileId() const { return m_FileId; }
 
-    int propertyFieldId(int propertyKey) const {
+    int propertyFieldId(int propertyKey) const
+    {
         auto itr = m_PropertyToFieldIndex.find(propertyKey);
-        if (itr == m_PropertyToFieldIndex.end()) {
+        if (itr == m_PropertyToFieldIndex.end())
+        {
             return -1;
         }
 
@@ -40,26 +44,32 @@
     /// @param reader the binary reader attached to the buffer
     /// @param header a pointer to the header where the data will be stored.
     /// @returns true if the header is successfully read
-    static bool read(BinaryReader& reader, RuntimeHeader& header) {
-        for (int i = 0; i < 4; i++) {
+    static bool read(BinaryReader& reader, RuntimeHeader& header)
+    {
+        for (int i = 0; i < 4; i++)
+        {
             auto b = reader.readByte();
-            if (fingerprint[i] != b) {
+            if (fingerprint[i] != b)
+            {
                 return false;
             }
         }
 
         header.m_MajorVersion = reader.readVarUintAs<int>();
-        if (reader.didOverflow()) {
+        if (reader.didOverflow())
+        {
             return false;
         }
         header.m_MinorVersion = reader.readVarUintAs<int>();
-        if (reader.didOverflow()) {
+        if (reader.didOverflow())
+        {
             return false;
         }
 
         header.m_FileId = reader.readVarUintAs<int>();
 
-        if (reader.didOverflow()) {
+        if (reader.didOverflow())
+        {
             return false;
         }
 
@@ -68,22 +78,26 @@
              propertyKey = reader.readVarUintAs<int>())
         {
             propertyKeys.push_back(propertyKey);
-            if (reader.didOverflow()) {
+            if (reader.didOverflow())
+            {
                 return false;
             }
         }
 
         int currentInt = 0;
         int currentBit = 8;
-        for (auto propertyKey : propertyKeys) {
-            if (currentBit == 8) {
+        for (auto propertyKey : propertyKeys)
+        {
+            if (currentBit == 8)
+            {
                 currentInt = reader.readUint32();
                 currentBit = 0;
             }
             int fieldIndex = (currentInt >> currentBit) & 3;
             header.m_PropertyToFieldIndex[propertyKey] = fieldIndex;
             currentBit += 2;
-            if (reader.didOverflow()) {
+            if (reader.didOverflow())
+            {
                 return false;
             }
         }
diff --git a/include/rive/scene.hpp b/include/rive/scene.hpp
index fcafc0c..20a9e6a 100644
--- a/include/rive/scene.hpp
+++ b/include/rive/scene.hpp
@@ -6,7 +6,8 @@
 #include "rive/math/vec2d.hpp"
 #include <string>
 
-namespace rive {
+namespace rive
+{
 class ArtboardInstance;
 class Renderer;
 
@@ -15,7 +16,8 @@
 class SMINumber;
 class SMITrigger;
 
-class Scene {
+class Scene
+{
 protected:
     ArtboardInstance* m_ArtboardInstance;
 
diff --git a/include/rive/shapes/clipping_shape.hpp b/include/rive/shapes/clipping_shape.hpp
index e990298..3657013 100644
--- a/include/rive/shapes/clipping_shape.hpp
+++ b/include/rive/shapes/clipping_shape.hpp
@@ -5,11 +5,13 @@
 #include <stdio.h>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Shape;
 class Node;
 class RenderPath;
-class ClippingShape : public ClippingShapeBase {
+class ClippingShape : public ClippingShapeBase
+{
 private:
     std::vector<Shape*> m_Shapes;
     Node* m_Source = nullptr;
diff --git a/include/rive/shapes/contour_mesh_vertex.hpp b/include/rive/shapes/contour_mesh_vertex.hpp
index 3b274de..850b4ac 100644
--- a/include/rive/shapes/contour_mesh_vertex.hpp
+++ b/include/rive/shapes/contour_mesh_vertex.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_CONTOUR_MESH_VERTEX_HPP_
 #include "rive/generated/shapes/contour_mesh_vertex_base.hpp"
 
-namespace rive {
-class ContourMeshVertex : public ContourMeshVertexBase {
+namespace rive
+{
+class ContourMeshVertex : public ContourMeshVertexBase
+{
 public:
 };
 } // namespace rive
diff --git a/include/rive/shapes/cubic_asymmetric_vertex.hpp b/include/rive/shapes/cubic_asymmetric_vertex.hpp
index 553a807..98701f0 100644
--- a/include/rive/shapes/cubic_asymmetric_vertex.hpp
+++ b/include/rive/shapes/cubic_asymmetric_vertex.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_CUBIC_ASYMMETRIC_VERTEX_HPP_
 #define _RIVE_CUBIC_ASYMMETRIC_VERTEX_HPP_
 #include "rive/generated/shapes/cubic_asymmetric_vertex_base.hpp"
-namespace rive {
-class CubicAsymmetricVertex : public CubicAsymmetricVertexBase {
+namespace rive
+{
+class CubicAsymmetricVertex : public CubicAsymmetricVertexBase
+{
 protected:
     void computeIn() override;
     void computeOut() override;
diff --git a/include/rive/shapes/cubic_detached_vertex.hpp b/include/rive/shapes/cubic_detached_vertex.hpp
index e84d23b..14e679d 100644
--- a/include/rive/shapes/cubic_detached_vertex.hpp
+++ b/include/rive/shapes/cubic_detached_vertex.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_CUBIC_DETACHED_VERTEX_HPP_
 #define _RIVE_CUBIC_DETACHED_VERTEX_HPP_
 #include "rive/generated/shapes/cubic_detached_vertex_base.hpp"
-namespace rive {
-class CubicDetachedVertex : public CubicDetachedVertexBase {
+namespace rive
+{
+class CubicDetachedVertex : public CubicDetachedVertexBase
+{
 protected:
     void computeIn() override;
     void computeOut() override;
diff --git a/include/rive/shapes/cubic_mirrored_vertex.hpp b/include/rive/shapes/cubic_mirrored_vertex.hpp
index 859164b..c32df04 100644
--- a/include/rive/shapes/cubic_mirrored_vertex.hpp
+++ b/include/rive/shapes/cubic_mirrored_vertex.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_CUBIC_MIRRORED_VERTEX_HPP_
 #define _RIVE_CUBIC_MIRRORED_VERTEX_HPP_
 #include "rive/generated/shapes/cubic_mirrored_vertex_base.hpp"
-namespace rive {
-class CubicMirroredVertex : public CubicMirroredVertexBase {
+namespace rive
+{
+class CubicMirroredVertex : public CubicMirroredVertexBase
+{
 protected:
     void computeIn() override;
     void computeOut() override;
diff --git a/include/rive/shapes/cubic_vertex.hpp b/include/rive/shapes/cubic_vertex.hpp
index 05476c5..31ae2d9 100644
--- a/include/rive/shapes/cubic_vertex.hpp
+++ b/include/rive/shapes/cubic_vertex.hpp
@@ -3,9 +3,11 @@
 #include "rive/generated/shapes/cubic_vertex_base.hpp"
 #include "rive/math/vec2d.hpp"
 
-namespace rive {
+namespace rive
+{
 class Vec2D;
-class CubicVertex : public CubicVertexBase {
+class CubicVertex : public CubicVertexBase
+{
 protected:
     bool m_InValid = false;
     bool m_OutValid = false;
diff --git a/include/rive/shapes/ellipse.hpp b/include/rive/shapes/ellipse.hpp
index fde5a1a..750ade0 100644
--- a/include/rive/shapes/ellipse.hpp
+++ b/include/rive/shapes/ellipse.hpp
@@ -3,8 +3,10 @@
 #include "rive/generated/shapes/ellipse_base.hpp"
 #include "rive/shapes/cubic_detached_vertex.hpp"
 
-namespace rive {
-class Ellipse : public EllipseBase {
+namespace rive
+{
+class Ellipse : public EllipseBase
+{
     CubicDetachedVertex m_Vertex1, m_Vertex2, m_Vertex3, m_Vertex4;
 
 public:
diff --git a/include/rive/shapes/image.hpp b/include/rive/shapes/image.hpp
index 846476b..421a404 100644
--- a/include/rive/shapes/image.hpp
+++ b/include/rive/shapes/image.hpp
@@ -5,10 +5,12 @@
 #include "rive/generated/shapes/image_base.hpp"
 #include "rive/assets/file_asset_referencer.hpp"
 
-namespace rive {
+namespace rive
+{
 class ImageAsset;
 class Mesh;
-class Image : public ImageBase, public FileAssetReferencer {
+class Image : public ImageBase, public FileAssetReferencer
+{
 private:
     ImageAsset* m_ImageAsset = nullptr;
     Mesh* m_Mesh = nullptr;
diff --git a/include/rive/shapes/mesh.hpp b/include/rive/shapes/mesh.hpp
index c7a0872..a833d0f 100644
--- a/include/rive/shapes/mesh.hpp
+++ b/include/rive/shapes/mesh.hpp
@@ -6,13 +6,16 @@
 #include "rive/refcnt.hpp"
 #include "rive/renderer.hpp"
 
-namespace rive {
+namespace rive
+{
 class MeshVertex;
 
-class Mesh : public MeshBase, public Skinnable {
+class Mesh : public MeshBase, public Skinnable
+{
 
 protected:
-    class IndexBuffer : public std::vector<uint16_t>, public RefCnt<IndexBuffer> {};
+    class IndexBuffer : public std::vector<uint16_t>, public RefCnt<IndexBuffer>
+    {};
     std::vector<MeshVertex*> m_Vertices;
     rcp<IndexBuffer> m_IndexBuffer;
 
diff --git a/include/rive/shapes/mesh_vertex.hpp b/include/rive/shapes/mesh_vertex.hpp
index 69cdedd..2b8c04f 100644
--- a/include/rive/shapes/mesh_vertex.hpp
+++ b/include/rive/shapes/mesh_vertex.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_MESH_VERTEX_HPP_
 #include "rive/generated/shapes/mesh_vertex_base.hpp"
 #include <stdio.h>
-namespace rive {
-class MeshVertex : public MeshVertexBase {
+namespace rive
+{
+class MeshVertex : public MeshVertexBase
+{
 public:
     void markGeometryDirty() override;
     StatusCode onAddedDirty(CoreContext* context) override;
diff --git a/include/rive/shapes/metrics_path.hpp b/include/rive/shapes/metrics_path.hpp
index 4ff43a7..c8b8e16 100644
--- a/include/rive/shapes/metrics_path.hpp
+++ b/include/rive/shapes/metrics_path.hpp
@@ -7,9 +7,11 @@
 #include <cassert>
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 
-class MetricsPath : public CommandPath {
+class MetricsPath : public CommandPath
+{
 private:
     RawPath m_RawPath; // temporary, until we build m_Contour
     rcp<ContourMeasure> m_Contour;
@@ -38,18 +40,21 @@
     float computeLength(const Mat2D& transform);
 };
 
-class OnlyMetricsPath : public MetricsPath {
+class OnlyMetricsPath : public MetricsPath
+{
 public:
     void fillRule(FillRule value) override {}
 
-    RenderPath* renderPath() override {
+    RenderPath* renderPath() override
+    {
         // Should never be used for actual rendering.
         assert(false);
         return nullptr;
     }
 };
 
-class RenderMetricsPath : public MetricsPath {
+class RenderMetricsPath : public MetricsPath
+{
 private:
     std::unique_ptr<RenderPath> m_RenderPath;
 
diff --git a/include/rive/shapes/paint/blend_mode.hpp b/include/rive/shapes/paint/blend_mode.hpp
index 1ebe72c..0fbc4b3 100644
--- a/include/rive/shapes/paint/blend_mode.hpp
+++ b/include/rive/shapes/paint/blend_mode.hpp
@@ -1,7 +1,9 @@
 #ifndef _RIVE_BLEND_MODE_HPP_
 #define _RIVE_BLEND_MODE_HPP_
-namespace rive {
-enum class BlendMode : unsigned int {
+namespace rive
+{
+enum class BlendMode : unsigned int
+{
     srcOver = 3,
     screen = 14,
     overlay = 15,
diff --git a/include/rive/shapes/paint/color.hpp b/include/rive/shapes/paint/color.hpp
index 10f4d66..850fbb3 100644
--- a/include/rive/shapes/paint/color.hpp
+++ b/include/rive/shapes/paint/color.hpp
@@ -3,7 +3,8 @@
 #include <cmath>
 #include <cstdint>
 
-namespace rive {
+namespace rive
+{
 using ColorInt = uint32_t;
 
 ColorInt colorARGB(int a, int r, int g, int b);
diff --git a/include/rive/shapes/paint/fill.hpp b/include/rive/shapes/paint/fill.hpp
index c8c006c..938eae1 100644
--- a/include/rive/shapes/paint/fill.hpp
+++ b/include/rive/shapes/paint/fill.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_FILL_HPP_
 #include "rive/generated/shapes/paint/fill_base.hpp"
 #include "rive/shapes/path_space.hpp"
-namespace rive {
-class Fill : public FillBase {
+namespace rive
+{
+class Fill : public FillBase
+{
 public:
     RenderPaint* initRenderPaint(ShapePaintMutator* mutator) override;
     PathSpace pathSpace() const override;
diff --git a/include/rive/shapes/paint/gradient_stop.hpp b/include/rive/shapes/paint/gradient_stop.hpp
index 721489c..f0e7db8 100644
--- a/include/rive/shapes/paint/gradient_stop.hpp
+++ b/include/rive/shapes/paint/gradient_stop.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_GRADIENT_STOP_HPP_
 #define _RIVE_GRADIENT_STOP_HPP_
 #include "rive/generated/shapes/paint/gradient_stop_base.hpp"
-namespace rive {
-class GradientStop : public GradientStopBase {
+namespace rive
+{
+class GradientStop : public GradientStopBase
+{
 public:
     StatusCode onAddedDirty(CoreContext* context) override;
 
diff --git a/include/rive/shapes/paint/linear_gradient.hpp b/include/rive/shapes/paint/linear_gradient.hpp
index 11f9710..446997e 100644
--- a/include/rive/shapes/paint/linear_gradient.hpp
+++ b/include/rive/shapes/paint/linear_gradient.hpp
@@ -6,11 +6,13 @@
 #include "rive/shapes/paint/shape_paint_mutator.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Node;
 class GradientStop;
 
-class LinearGradient : public LinearGradientBase, public ShapePaintMutator {
+class LinearGradient : public LinearGradientBase, public ShapePaintMutator
+{
 private:
     std::vector<GradientStop*> m_Stops;
     Node* m_ShapePaintContainer = nullptr;
diff --git a/include/rive/shapes/paint/radial_gradient.hpp b/include/rive/shapes/paint/radial_gradient.hpp
index 34d388c..36409f9 100644
--- a/include/rive/shapes/paint/radial_gradient.hpp
+++ b/include/rive/shapes/paint/radial_gradient.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_RADIAL_GRADIENT_HPP_
 #define _RIVE_RADIAL_GRADIENT_HPP_
 #include "rive/generated/shapes/paint/radial_gradient_base.hpp"
-namespace rive {
-class RadialGradient : public RadialGradientBase {
+namespace rive
+{
+class RadialGradient : public RadialGradientBase
+{
 public:
     void
     makeGradient(Vec2D start, Vec2D end, const ColorInt[], const float[], size_t count) override;
diff --git a/include/rive/shapes/paint/shape_paint.hpp b/include/rive/shapes/paint/shape_paint.hpp
index de81fc4..f73ad26 100644
--- a/include/rive/shapes/paint/shape_paint.hpp
+++ b/include/rive/shapes/paint/shape_paint.hpp
@@ -5,10 +5,12 @@
 #include "rive/shapes/paint/blend_mode.hpp"
 #include "rive/shapes/paint/shape_paint_mutator.hpp"
 #include "rive/shapes/path_space.hpp"
-namespace rive {
+namespace rive
+{
 class RenderPaint;
 class ShapePaintMutator;
-class ShapePaint : public ShapePaintBase {
+class ShapePaint : public ShapePaintBase
+{
 protected:
     std::unique_ptr<RenderPaint> m_RenderPaint;
     ShapePaintMutator* m_PaintMutator = nullptr;
diff --git a/include/rive/shapes/paint/shape_paint_mutator.hpp b/include/rive/shapes/paint/shape_paint_mutator.hpp
index db01e46..1ec89f0 100644
--- a/include/rive/shapes/paint/shape_paint_mutator.hpp
+++ b/include/rive/shapes/paint/shape_paint_mutator.hpp
@@ -1,10 +1,12 @@
 #ifndef _RIVE_SHAPE_PAINT_MUTATOR_HPP_
 #define _RIVE_SHAPE_PAINT_MUTATOR_HPP_
 
-namespace rive {
+namespace rive
+{
 class Component;
 class RenderPaint;
-class ShapePaintMutator {
+class ShapePaintMutator
+{
 private:
     float m_RenderOpacity = 1.0f;
     RenderPaint* m_RenderPaint = nullptr;
diff --git a/include/rive/shapes/paint/solid_color.hpp b/include/rive/shapes/paint/solid_color.hpp
index ece47ba..1a5fd26 100644
--- a/include/rive/shapes/paint/solid_color.hpp
+++ b/include/rive/shapes/paint/solid_color.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_SOLID_COLOR_HPP_
 #include "rive/generated/shapes/paint/solid_color_base.hpp"
 #include "rive/shapes/paint/shape_paint_mutator.hpp"
-namespace rive {
-class SolidColor : public SolidColorBase, public ShapePaintMutator {
+namespace rive
+{
+class SolidColor : public SolidColorBase, public ShapePaintMutator
+{
 public:
     StatusCode onAddedDirty(CoreContext* context) override;
 
diff --git a/include/rive/shapes/paint/stroke.hpp b/include/rive/shapes/paint/stroke.hpp
index f26fc27..35f671b 100644
--- a/include/rive/shapes/paint/stroke.hpp
+++ b/include/rive/shapes/paint/stroke.hpp
@@ -2,9 +2,11 @@
 #define _RIVE_STROKE_HPP_
 #include "rive/generated/shapes/paint/stroke_base.hpp"
 #include "rive/shapes/path_space.hpp"
-namespace rive {
+namespace rive
+{
 class StrokeEffect;
-class Stroke : public StrokeBase {
+class Stroke : public StrokeBase
+{
 private:
     StrokeEffect* m_Effect = nullptr;
 
diff --git a/include/rive/shapes/paint/stroke_cap.hpp b/include/rive/shapes/paint/stroke_cap.hpp
index 9ee81ca..243a973 100644
--- a/include/rive/shapes/paint/stroke_cap.hpp
+++ b/include/rive/shapes/paint/stroke_cap.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_STROKE_CAP_HPP_
 #define _RIVE_STROKE_CAP_HPP_
-namespace rive {
+namespace rive
+{
 /// Style used for stroke line endings.
-enum class StrokeCap : unsigned int {
+enum class StrokeCap : unsigned int
+{
     /// Flat edge at the start/end of the stroke.
     butt = 0,
 
diff --git a/include/rive/shapes/paint/stroke_effect.hpp b/include/rive/shapes/paint/stroke_effect.hpp
index 82658cb..2276d94 100644
--- a/include/rive/shapes/paint/stroke_effect.hpp
+++ b/include/rive/shapes/paint/stroke_effect.hpp
@@ -3,12 +3,14 @@
 
 #include "rive/rive_types.hpp"
 
-namespace rive {
+namespace rive
+{
 class Factory;
 class RenderPath;
 class MetricsPath;
 
-class StrokeEffect {
+class StrokeEffect
+{
 public:
     virtual ~StrokeEffect() {}
     virtual RenderPath* effectPath(MetricsPath* source, Factory*) = 0;
diff --git a/include/rive/shapes/paint/stroke_join.hpp b/include/rive/shapes/paint/stroke_join.hpp
index 68f053b..b0f3810 100644
--- a/include/rive/shapes/paint/stroke_join.hpp
+++ b/include/rive/shapes/paint/stroke_join.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_STROKE_JOIN_HPP_
 #define _RIVE_STROKE_JOIN_HPP_
-namespace rive {
+namespace rive
+{
 /// Style used for stroke segment joins when there is a sharp change.
-enum class StrokeJoin : unsigned int {
+enum class StrokeJoin : unsigned int
+{
     /// Makes a sharp corner at the joint.
     miter = 0,
 
diff --git a/include/rive/shapes/paint/trim_path.hpp b/include/rive/shapes/paint/trim_path.hpp
index f541421..99ed5bb 100644
--- a/include/rive/shapes/paint/trim_path.hpp
+++ b/include/rive/shapes/paint/trim_path.hpp
@@ -5,8 +5,10 @@
 #include "rive/renderer.hpp"
 #include <stdio.h>
 
-namespace rive {
-class TrimPath : public TrimPathBase, public StrokeEffect {
+namespace rive
+{
+class TrimPath : public TrimPathBase, public StrokeEffect
+{
 private:
     std::unique_ptr<RenderPath> m_TrimmedPath;
     RenderPath* m_RenderPath = nullptr;
diff --git a/include/rive/shapes/parametric_path.hpp b/include/rive/shapes/parametric_path.hpp
index 44a771e..03f872a 100644
--- a/include/rive/shapes/parametric_path.hpp
+++ b/include/rive/shapes/parametric_path.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_PARAMETRIC_PATH_HPP_
 #define _RIVE_PARAMETRIC_PATH_HPP_
 #include "rive/generated/shapes/parametric_path_base.hpp"
-namespace rive {
-class ParametricPath : public ParametricPathBase {
+namespace rive
+{
+class ParametricPath : public ParametricPathBase
+{
 protected:
     void widthChanged() override;
     void heightChanged() override;
diff --git a/include/rive/shapes/path.hpp b/include/rive/shapes/path.hpp
index 83e2996..0df5914 100644
--- a/include/rive/shapes/path.hpp
+++ b/include/rive/shapes/path.hpp
@@ -5,7 +5,8 @@
 #include "rive/math/mat2d.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Shape;
 class PathVertex;
 
@@ -18,7 +19,8 @@
 /// and cubic vertices. No corner vertices and it's entirely in world space.
 /// This is helpful for getting a close to identical representation of the
 /// vertices used to issue the high level path draw commands.
-class FlattenedPath {
+class FlattenedPath
+{
 private:
     std::vector<PathVertex*> m_Vertices;
 
@@ -30,7 +32,8 @@
 };
 #endif
 
-class Path : public PathBase {
+class Path : public PathBase
+{
 protected:
     Shape* m_Shape = nullptr;
     std::unique_ptr<CommandPath> m_CommandPath;
diff --git a/include/rive/shapes/path_composer.hpp b/include/rive/shapes/path_composer.hpp
index 7980f74..eac77cc 100644
--- a/include/rive/shapes/path_composer.hpp
+++ b/include/rive/shapes/path_composer.hpp
@@ -1,11 +1,13 @@
 #ifndef _RIVE_PATH_COMPOSER_HPP_
 #define _RIVE_PATH_COMPOSER_HPP_
 #include "rive/component.hpp"
-namespace rive {
+namespace rive
+{
 class Shape;
 class CommandPath;
 class RenderPath;
-class PathComposer : public Component {
+class PathComposer : public Component
+{
 private:
     Shape* m_Shape;
     std::unique_ptr<CommandPath> m_LocalPath;
diff --git a/include/rive/shapes/path_space.hpp b/include/rive/shapes/path_space.hpp
index 8e93a0a..5b54483 100644
--- a/include/rive/shapes/path_space.hpp
+++ b/include/rive/shapes/path_space.hpp
@@ -3,48 +3,57 @@
 
 #include "rive/rive_types.hpp"
 
-namespace rive {
-enum class PathSpace : unsigned char {
+namespace rive
+{
+enum class PathSpace : unsigned char
+{
     Neither = 0,
     Local = 1 << 1,
     World = 1 << 2,
     Clipping = 1 << 3
 };
 
-inline constexpr PathSpace operator&(PathSpace lhs, PathSpace rhs) {
+inline constexpr PathSpace operator&(PathSpace lhs, PathSpace rhs)
+{
     return static_cast<PathSpace>(static_cast<std::underlying_type<PathSpace>::type>(lhs) &
                                   static_cast<std::underlying_type<PathSpace>::type>(rhs));
 }
 
-inline constexpr PathSpace operator^(PathSpace lhs, PathSpace rhs) {
+inline constexpr PathSpace operator^(PathSpace lhs, PathSpace rhs)
+{
     return static_cast<PathSpace>(static_cast<std::underlying_type<PathSpace>::type>(lhs) ^
                                   static_cast<std::underlying_type<PathSpace>::type>(rhs));
 }
 
-inline constexpr PathSpace operator|(PathSpace lhs, PathSpace rhs) {
+inline constexpr PathSpace operator|(PathSpace lhs, PathSpace rhs)
+{
     return static_cast<PathSpace>(static_cast<std::underlying_type<PathSpace>::type>(lhs) |
                                   static_cast<std::underlying_type<PathSpace>::type>(rhs));
 }
 
-inline constexpr PathSpace operator~(PathSpace rhs) {
+inline constexpr PathSpace operator~(PathSpace rhs)
+{
     return static_cast<PathSpace>(~static_cast<std::underlying_type<PathSpace>::type>(rhs));
 }
 
-inline PathSpace& operator|=(PathSpace& lhs, PathSpace rhs) {
+inline PathSpace& operator|=(PathSpace& lhs, PathSpace rhs)
+{
     lhs = static_cast<PathSpace>(static_cast<std::underlying_type<PathSpace>::type>(lhs) |
                                  static_cast<std::underlying_type<PathSpace>::type>(rhs));
 
     return lhs;
 }
 
-inline PathSpace& operator&=(PathSpace& lhs, PathSpace rhs) {
+inline PathSpace& operator&=(PathSpace& lhs, PathSpace rhs)
+{
     lhs = static_cast<PathSpace>(static_cast<std::underlying_type<PathSpace>::type>(lhs) &
                                  static_cast<std::underlying_type<PathSpace>::type>(rhs));
 
     return lhs;
 }
 
-inline PathSpace& operator^=(PathSpace& lhs, PathSpace rhs) {
+inline PathSpace& operator^=(PathSpace& lhs, PathSpace rhs)
+{
     lhs = static_cast<PathSpace>(static_cast<std::underlying_type<PathSpace>::type>(lhs) ^
                                  static_cast<std::underlying_type<PathSpace>::type>(rhs));
 
diff --git a/include/rive/shapes/path_vertex.hpp b/include/rive/shapes/path_vertex.hpp
index a90332b..1df0872 100644
--- a/include/rive/shapes/path_vertex.hpp
+++ b/include/rive/shapes/path_vertex.hpp
@@ -3,8 +3,10 @@
 #include "rive/bones/weight.hpp"
 #include "rive/generated/shapes/path_vertex_base.hpp"
 #include "rive/math/mat2d.hpp"
-namespace rive {
-class PathVertex : public PathVertexBase {
+namespace rive
+{
+class PathVertex : public PathVertexBase
+{
 
 public:
     StatusCode onAddedDirty(CoreContext* context) override;
diff --git a/include/rive/shapes/points_path.hpp b/include/rive/shapes/points_path.hpp
index 61db55d..fd91881 100644
--- a/include/rive/shapes/points_path.hpp
+++ b/include/rive/shapes/points_path.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_POINTS_PATH_HPP_
 #include "rive/bones/skinnable.hpp"
 #include "rive/generated/shapes/points_path_base.hpp"
-namespace rive {
-class PointsPath : public PointsPathBase, public Skinnable {
+namespace rive
+{
+class PointsPath : public PointsPathBase, public Skinnable
+{
 public:
     bool isPathClosed() const override { return isClosed(); }
     void buildDependencies() override;
diff --git a/include/rive/shapes/polygon.hpp b/include/rive/shapes/polygon.hpp
index b3f307f..7d2ed4b 100644
--- a/include/rive/shapes/polygon.hpp
+++ b/include/rive/shapes/polygon.hpp
@@ -4,8 +4,10 @@
 #include "rive/shapes/path_vertex.hpp"
 #include "rive/shapes/straight_vertex.hpp"
 #include <vector>
-namespace rive {
-class Polygon : public PolygonBase {
+namespace rive
+{
+class Polygon : public PolygonBase
+{
 protected:
     std::vector<StraightVertex> m_PolygonVertices;
 
diff --git a/include/rive/shapes/rectangle.hpp b/include/rive/shapes/rectangle.hpp
index 81426c1..26bcdc1 100644
--- a/include/rive/shapes/rectangle.hpp
+++ b/include/rive/shapes/rectangle.hpp
@@ -3,8 +3,10 @@
 #include "rive/generated/shapes/rectangle_base.hpp"
 #include "rive/shapes/straight_vertex.hpp"
 
-namespace rive {
-class Rectangle : public RectangleBase {
+namespace rive
+{
+class Rectangle : public RectangleBase
+{
     StraightVertex m_Vertex1, m_Vertex2, m_Vertex3, m_Vertex4;
 
 public:
diff --git a/include/rive/shapes/shape.hpp b/include/rive/shapes/shape.hpp
index 22840c3..ef420cf 100644
--- a/include/rive/shapes/shape.hpp
+++ b/include/rive/shapes/shape.hpp
@@ -7,11 +7,13 @@
 #include "rive/shapes/shape_paint_container.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Path;
 class PathComposer;
 class HitTester;
-class Shape : public ShapeBase, public ShapePaintContainer {
+class Shape : public ShapeBase, public ShapePaintContainer
+{
 private:
     PathComposer m_PathComposer;
     std::vector<Path*> m_Paths;
diff --git a/include/rive/shapes/shape_paint_container.hpp b/include/rive/shapes/shape_paint_container.hpp
index fea2b30..6771f6b 100644
--- a/include/rive/shapes/shape_paint_container.hpp
+++ b/include/rive/shapes/shape_paint_container.hpp
@@ -4,14 +4,16 @@
 #include "rive/shapes/path_space.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class Artboard;
 class ShapePaint;
 class Component;
 
 class CommandPath;
 
-class ShapePaintContainer {
+class ShapePaintContainer
+{
     friend class ShapePaint;
 
 protected:
diff --git a/include/rive/shapes/star.hpp b/include/rive/shapes/star.hpp
index 45f4d19..903bd51 100644
--- a/include/rive/shapes/star.hpp
+++ b/include/rive/shapes/star.hpp
@@ -2,8 +2,10 @@
 #define _RIVE_STAR_HPP_
 #include "rive/generated/shapes/star_base.hpp"
 #include <stdio.h>
-namespace rive {
-class Star : public StarBase {
+namespace rive
+{
+class Star : public StarBase
+{
 public:
     Star();
     void update(ComponentDirt value) override;
diff --git a/include/rive/shapes/straight_vertex.hpp b/include/rive/shapes/straight_vertex.hpp
index 8e40e30..ae0e4e3 100644
--- a/include/rive/shapes/straight_vertex.hpp
+++ b/include/rive/shapes/straight_vertex.hpp
@@ -1,8 +1,10 @@
 #ifndef _RIVE_STRAIGHT_VERTEX_HPP_
 #define _RIVE_STRAIGHT_VERTEX_HPP_
 #include "rive/generated/shapes/straight_vertex_base.hpp"
-namespace rive {
-class StraightVertex : public StraightVertexBase {
+namespace rive
+{
+class StraightVertex : public StraightVertexBase
+{
 protected:
     void radiusChanged() override;
 };
diff --git a/include/rive/shapes/triangle.hpp b/include/rive/shapes/triangle.hpp
index 54fe96b..ff44a5b 100644
--- a/include/rive/shapes/triangle.hpp
+++ b/include/rive/shapes/triangle.hpp
@@ -3,8 +3,10 @@
 #include "rive/generated/shapes/triangle_base.hpp"
 #include "rive/shapes/straight_vertex.hpp"
 
-namespace rive {
-class Triangle : public TriangleBase {
+namespace rive
+{
+class Triangle : public TriangleBase
+{
 private:
     StraightVertex m_Vertex1, m_Vertex2, m_Vertex3;
 
diff --git a/include/rive/shapes/vertex.hpp b/include/rive/shapes/vertex.hpp
index 1ca4282..37624e2 100644
--- a/include/rive/shapes/vertex.hpp
+++ b/include/rive/shapes/vertex.hpp
@@ -3,8 +3,10 @@
 #include "rive/bones/weight.hpp"
 #include "rive/generated/shapes/vertex_base.hpp"
 #include "rive/math/mat2d.hpp"
-namespace rive {
-class Vertex : public VertexBase {
+namespace rive
+{
+class Vertex : public VertexBase
+{
     friend class Weight;
 
 private:
diff --git a/include/rive/simple_array.hpp b/include/rive/simple_array.hpp
index 48fd694..d51a5b4 100644
--- a/include/rive/simple_array.hpp
+++ b/include/rive/simple_array.hpp
@@ -11,12 +11,14 @@
 #include <type_traits>
 #include <cstring>
 
-namespace rive {
+namespace rive
+{
 
 template <typename T> class SimpleArrayBuilder;
 
 #ifdef TESTING
-namespace SimpleArrayTesting {
+namespace SimpleArrayTesting
+{
 extern int mallocCount;
 extern int reallocCount;
 extern int freeCount;
@@ -32,12 +34,16 @@
 /// it optimally sized for marshaling. See SimpleArrayBuilder<T> below for push
 /// functionality.
 
-template <typename T> class SimpleArray {
+template <typename T> class SimpleArray
+{
 public:
     SimpleArray() : m_ptr(nullptr), m_size(0) {}
-    SimpleArray(size_t size) : m_ptr(static_cast<T*>(malloc(size * sizeof(T)))), m_size(size) {
-        if constexpr (!std::is_pod<T>()) {
-            for (T *element = m_ptr, *end = m_ptr + m_size; element < end; element++) {
+    SimpleArray(size_t size) : m_ptr(static_cast<T*>(malloc(size * sizeof(T)))), m_size(size)
+    {
+        if constexpr (!std::is_pod<T>())
+        {
+            for (T *element = m_ptr, *end = m_ptr + m_size; element < end; element++)
+            {
                 new (element) T();
             }
         }
@@ -46,12 +52,17 @@
         SimpleArrayTesting::mallocCount++;
 #endif
     }
-    SimpleArray(const T* ptr, size_t size) : SimpleArray(size) {
+    SimpleArray(const T* ptr, size_t size) : SimpleArray(size)
+    {
         assert(ptr <= ptr + size);
-        if constexpr (std::is_pod<T>()) {
+        if constexpr (std::is_pod<T>())
+        {
             memcpy(m_ptr, ptr, size * sizeof(T));
-        } else {
-            for (T *element = m_ptr, *end = m_ptr + m_size; element < end; element++) {
+        }
+        else
+        {
+            for (T *element = m_ptr, *end = m_ptr + m_size; element < end; element++)
+            {
                 new (element) T(ptr++);
             }
         }
@@ -59,7 +70,8 @@
 
     constexpr SimpleArray(const SimpleArray<T>& other) : SimpleArray(other.m_ptr, other.m_size) {}
 
-    constexpr SimpleArray(SimpleArray<T>&& other) : m_ptr(other.m_ptr), m_size(other.m_size) {
+    constexpr SimpleArray(SimpleArray<T>&& other) : m_ptr(other.m_ptr), m_size(other.m_size)
+    {
         other.m_ptr = nullptr;
         other.m_size = 0;
     }
@@ -68,7 +80,8 @@
 
     SimpleArray<T>& operator=(const SimpleArray<T>& other) = delete;
 
-    SimpleArray<T>& operator=(SimpleArray<T>&& other) {
+    SimpleArray<T>& operator=(SimpleArray<T>&& other)
+    {
         this->m_ptr = other.m_ptr;
         this->m_size = other.m_size;
         other.m_ptr = nullptr;
@@ -79,12 +92,16 @@
     SimpleArray<T>& operator=(SimpleArrayBuilder<T>&& other);
 
     template <typename Container>
-    constexpr SimpleArray(Container& c) : SimpleArray(std::data(c), std::size(c)) {}
-    constexpr SimpleArray(std::initializer_list<T> il) :
-        SimpleArray(std::data(il), std::size(il)) {}
-    ~SimpleArray() {
-        if constexpr (!std::is_pod<T>()) {
-            for (T *element = m_ptr, *end = m_ptr + m_size; element < end; element++) {
+    constexpr SimpleArray(Container& c) : SimpleArray(std::data(c), std::size(c))
+    {}
+    constexpr SimpleArray(std::initializer_list<T> il) : SimpleArray(std::data(il), std::size(il))
+    {}
+    ~SimpleArray()
+    {
+        if constexpr (!std::is_pod<T>())
+        {
+            for (T *element = m_ptr, *end = m_ptr + m_size; element < end; element++)
+            {
                 element->~T();
             }
         }
@@ -94,7 +111,8 @@
 #endif
     }
 
-    constexpr T& operator[](size_t index) const {
+    constexpr T& operator[](size_t index) const
+    {
         assert(index < m_size);
         return m_ptr[index];
     }
@@ -129,23 +147,27 @@
 
 /// Extension of SimpleArray which can progressively expand as contents are
 /// pushed/added/written to it. Can be released as a simple SimpleArray.
-template <typename T> class SimpleArrayBuilder : public SimpleArray<T> {
+template <typename T> class SimpleArrayBuilder : public SimpleArray<T>
+{
     friend class SimpleArray<T>;
 
 public:
-    SimpleArrayBuilder(size_t reserve) : SimpleArray<T>(reserve) {
+    SimpleArrayBuilder(size_t reserve) : SimpleArray<T>(reserve)
+    {
         assert(this->m_ptr <= this->m_ptr + this->m_size);
         m_write = this->m_ptr;
     }
 
     SimpleArrayBuilder() : SimpleArrayBuilder(0) {}
 
-    void add(const T& value) {
+    void add(const T& value)
+    {
         growToFit();
         *m_write++ = value;
     }
 
-    void add(T&& value) {
+    void add(T&& value)
+    {
         growToFit();
         *m_write++ = std::move(value);
     }
@@ -161,33 +183,41 @@
     constexpr T& back() const { return *(m_write - 1); }
 
 private:
-    void growToFit() {
-        if (m_write == this->m_ptr + this->m_size) {
+    void growToFit()
+    {
+        if (m_write == this->m_ptr + this->m_size)
+        {
             auto writeOffset = m_write - this->m_ptr;
             this->resize(std::max((size_t)1, this->m_size * 2));
             m_write = this->m_ptr + writeOffset;
         }
     }
 
-    void resize(size_t size) {
-        if (size == this->m_size) {
+    void resize(size_t size)
+    {
+        if (size == this->m_size)
+        {
             return;
         }
 #ifdef TESTING
         SimpleArrayTesting::reallocCount++;
 #endif
-        if constexpr (!std::is_pod<T>()) {
+        if constexpr (!std::is_pod<T>())
+        {
             // Call destructor for elements when sizing down.
             for (T *element = this->m_ptr + size, *end = this->m_ptr + this->m_size; element < end;
-                 element++) {
+                 element++)
+            {
                 element->~T();
             }
         }
         this->m_ptr = static_cast<T*>(realloc(this->m_ptr, size * sizeof(T)));
-        if constexpr (!std::is_pod<T>()) {
+        if constexpr (!std::is_pod<T>())
+        {
             // Call constructor for elements when sizing up.
             for (T *element = this->m_ptr + this->m_size, *end = this->m_ptr + size; element < end;
-                 element++) {
+                 element++)
+            {
                 new (element) T();
             }
         }
@@ -198,7 +228,8 @@
 };
 
 template <typename T>
-constexpr SimpleArray<T>::SimpleArray(SimpleArrayBuilder<T>&& other) : m_size(other.size()) {
+constexpr SimpleArray<T>::SimpleArray(SimpleArrayBuilder<T>&& other) : m_size(other.size())
+{
     // Bring the capacity down to the actual size (this should keep the same
     // ptr, but that's not guaranteed, so we copy the ptr after the realloc).
     other.resize(other.size());
@@ -207,7 +238,8 @@
     other.m_size = 0;
 }
 
-template <typename T> SimpleArray<T>& SimpleArray<T>::operator=(SimpleArrayBuilder<T>&& other) {
+template <typename T> SimpleArray<T>& SimpleArray<T>::operator=(SimpleArrayBuilder<T>&& other)
+{
     other.resize(other.size());
     this->m_ptr = other.m_ptr;
     this->m_size = other.m_size;
diff --git a/include/rive/span.hpp b/include/rive/span.hpp
index de21bbf..bc86e3d 100644
--- a/include/rive/span.hpp
+++ b/include/rive/span.hpp
@@ -16,9 +16,11 @@
  *  Inspired by Skia's SkSpan
  */
 
-namespace rive {
+namespace rive
+{
 
-template <typename T> class Span {
+template <typename T> class Span
+{
     T* m_Ptr;
     size_t m_Size;
 
@@ -28,13 +30,15 @@
 
     // Handle Span<foo> --> Span<const foo>
     template <typename U, typename = typename std::enable_if<std::is_same<const U, T>::value>::type>
-    constexpr Span(const Span<U>& that) : Span(that.data(), that.size()) {}
+    constexpr Span(const Span<U>& that) : Span(that.data(), that.size())
+    {}
     constexpr Span(const Span&) = default;
     template <typename Container> constexpr Span(Container& c) : Span{std::data(c), std::size(c)} {}
     constexpr Span(std::initializer_list<T> il) : Span(std::data(il), std::size(il)) {}
     template <size_t N> constexpr Span(T (&a)[N]) : Span(a, N) {}
 
-    constexpr T& operator[](size_t index) const {
+    constexpr T& operator[](size_t index) const
+    {
         assert(index < m_Size);
         return m_Ptr[index];
     }
@@ -52,13 +56,15 @@
     // returns byte-size of the entire span
     constexpr size_t size_bytes() const { return m_Size * sizeof(T); }
 
-    constexpr int count() const {
+    constexpr int count() const
+    {
         const int n = static_cast<int>(m_Size);
         assert(n >= 0);
         return n;
     }
 
-    constexpr Span<T> subset(size_t offset, size_t size) const {
+    constexpr Span<T> subset(size_t offset, size_t size) const
+    {
         assert(offset <= m_Size);
         assert(size <= m_Size - offset);
         return {m_Ptr + offset, size};
diff --git a/include/rive/status_code.hpp b/include/rive/status_code.hpp
index 788b3ba..a7967ea 100644
--- a/include/rive/status_code.hpp
+++ b/include/rive/status_code.hpp
@@ -3,7 +3,14 @@
 
 #include "rive/rive_types.hpp"
 
-namespace rive {
-enum class StatusCode : unsigned char { Ok, MissingObject, InvalidObject, FailedInversion };
+namespace rive
+{
+enum class StatusCode : unsigned char
+{
+    Ok,
+    MissingObject,
+    InvalidObject,
+    FailedInversion
+};
 }
 #endif
diff --git a/include/rive/text/line_breaker.hpp b/include/rive/text/line_breaker.hpp
index 37d50d0..827873d 100644
--- a/include/rive/text/line_breaker.hpp
+++ b/include/rive/text/line_breaker.hpp
@@ -7,11 +7,18 @@
 
 #include "rive/render_text.hpp"
 
-namespace rive {
+namespace rive
+{
 
-enum class RenderTextAlign : uint8_t { left = 0, right = 1, center = 2 };
+enum class RenderTextAlign : uint8_t
+{
+    left = 0,
+    right = 1,
+    center = 2
+};
 
-struct RenderGlyphLine {
+struct RenderGlyphLine
+{
     uint32_t startRun;
     uint32_t startIndex;
     uint32_t endRun;
@@ -19,14 +26,16 @@
     float startX;
     float top = 0, baseline = 0, bottom = 0;
 
-    bool operator==(const RenderGlyphLine& o) const {
+    bool operator==(const RenderGlyphLine& o) const
+    {
         return startRun == o.startRun && startIndex == o.startIndex && endRun == o.endRun &&
                endIndex == o.endIndex;
     }
 
     RenderGlyphLine() : startRun(0), startIndex(0), endRun(0), endIndex(0), startX(0.0f) {}
     RenderGlyphLine(uint32_t run, uint32_t index) :
-        startRun(run), startIndex(index), endRun(run), endIndex(index), startX(0.0f) {}
+        startRun(run), startIndex(index), endRun(run), endIndex(index), startX(0.0f)
+    {}
 
     bool empty() const { return startRun == endRun && startIndex == endIndex; }
     static std::vector<RenderGlyphLine> BreakLines(Span<const RenderGlyphRun> runs,
diff --git a/include/rive/text/renderfont_hb.hpp b/include/rive/text/renderfont_hb.hpp
index 0ebac54..865afc2 100644
--- a/include/rive/text/renderfont_hb.hpp
+++ b/include/rive/text/renderfont_hb.hpp
@@ -11,7 +11,8 @@
 struct hb_font_t;
 struct hb_draw_funcs_t;
 
-class HBRenderFont : public rive::RenderFont {
+class HBRenderFont : public rive::RenderFont
+{
     hb_draw_funcs_t* m_DrawFuncs;
 
 public:
diff --git a/include/rive/transform_component.hpp b/include/rive/transform_component.hpp
index fc9ae02..258949e 100644
--- a/include/rive/transform_component.hpp
+++ b/include/rive/transform_component.hpp
@@ -3,10 +3,12 @@
 #include "rive/generated/transform_component_base.hpp"
 #include "rive/math/mat2d.hpp"
 
-namespace rive {
+namespace rive
+{
 class Constraint;
 class WorldTransformComponent;
-class TransformComponent : public TransformComponentBase {
+class TransformComponent : public TransformComponentBase
+{
 private:
     Mat2D m_Transform;
     float m_RenderOpacity = 0.0f;
diff --git a/include/rive/transform_space.hpp b/include/rive/transform_space.hpp
index a95b58a..3e9c3c9 100644
--- a/include/rive/transform_space.hpp
+++ b/include/rive/transform_space.hpp
@@ -1,6 +1,11 @@
 #ifndef _RIVE_TRANSFORM_SPACE_HPP_
 #define _RIVE_TRANSFORM_SPACE_HPP_
-namespace rive {
-enum class TransformSpace : unsigned int { world = 0, local = 1 };
+namespace rive
+{
+enum class TransformSpace : unsigned int
+{
+    world = 0,
+    local = 1
+};
 }
 #endif
\ No newline at end of file
diff --git a/include/rive/world_transform_component.hpp b/include/rive/world_transform_component.hpp
index 77d1ae6..f5c97b2 100644
--- a/include/rive/world_transform_component.hpp
+++ b/include/rive/world_transform_component.hpp
@@ -3,9 +3,11 @@
 #include "rive/generated/world_transform_component_base.hpp"
 #include "rive/math/mat2d.hpp"
 
-namespace rive {
+namespace rive
+{
 class TransformComponent;
-class WorldTransformComponent : public WorldTransformComponentBase {
+class WorldTransformComponent : public WorldTransformComponentBase
+{
     friend class TransformComponent;
 
 protected:
diff --git a/include/utils/factory_utils.hpp b/include/utils/factory_utils.hpp
index 6f31b67..bc93cf3 100644
--- a/include/utils/factory_utils.hpp
+++ b/include/utils/factory_utils.hpp
@@ -7,28 +7,33 @@
 
 #include "rive/factory.hpp"
 
-namespace rive {
+namespace rive
+{
 
 // Generic subclass of RenderBuffer that just stores the data on the cpu.
 //
-class DataRenderBuffer : public RenderBuffer {
+class DataRenderBuffer : public RenderBuffer
+{
     const size_t m_elemSize;
     std::vector<uint32_t> m_storage; // store 32bits for alignment
 
 public:
     DataRenderBuffer(const void* src, size_t count, size_t elemSize) :
-        RenderBuffer(count), m_elemSize(elemSize) {
+        RenderBuffer(count), m_elemSize(elemSize)
+    {
         const size_t bytes = count * elemSize;
         m_storage.resize((bytes + 3) >> 2); // round up to next 32bit count
         memcpy(m_storage.data(), src, bytes);
     }
 
-    const float* f32s() const {
+    const float* f32s() const
+    {
         assert(m_elemSize == sizeof(float));
         return reinterpret_cast<const float*>(m_storage.data());
     }
 
-    const uint16_t* u16s() const {
+    const uint16_t* u16s() const
+    {
         assert(m_elemSize == sizeof(uint16_t));
         return reinterpret_cast<const uint16_t*>(m_storage.data());
     }
@@ -37,11 +42,13 @@
 
     size_t elemSize() const { return m_elemSize; }
 
-    static const DataRenderBuffer* Cast(const RenderBuffer* buffer) {
+    static const DataRenderBuffer* Cast(const RenderBuffer* buffer)
+    {
         return static_cast<const DataRenderBuffer*>(buffer);
     }
 
-    template <typename T> static rcp<RenderBuffer> Make(Span<T> span) {
+    template <typename T> static rcp<RenderBuffer> Make(Span<T> span)
+    {
         return rcp<RenderBuffer>(new DataRenderBuffer(span.data(), span.size(), sizeof(T)));
     }
 };
diff --git a/include/utils/no_op_factory.hpp b/include/utils/no_op_factory.hpp
index 2c1261c..3038738 100644
--- a/include/utils/no_op_factory.hpp
+++ b/include/utils/no_op_factory.hpp
@@ -7,9 +7,11 @@
 
 #include "rive/factory.hpp"
 
-namespace rive {
+namespace rive
+{
 
-class NoOpFactory : public Factory {
+class NoOpFactory : public Factory
+{
     rcp<RenderBuffer> makeBufferU16(Span<const uint16_t>) override;
     rcp<RenderBuffer> makeBufferU32(Span<const uint32_t>) override;
     rcp<RenderBuffer> makeBufferF32(Span<const float>) override;
diff --git a/include/utils/no_op_renderer.hpp b/include/utils/no_op_renderer.hpp
index 2da6ebe..0a0396b 100644
--- a/include/utils/no_op_renderer.hpp
+++ b/include/utils/no_op_renderer.hpp
@@ -7,9 +7,11 @@
 
 #include "rive/renderer.hpp"
 
-namespace rive {
+namespace rive
+{
 
-class NoOpRenderer : public Renderer {
+class NoOpRenderer : public Renderer
+{
 public:
     void save() override {}
     void restore() override {}
@@ -22,7 +24,8 @@
                        rcp<RenderBuffer>,
                        rcp<RenderBuffer>,
                        BlendMode,
-                       float) override {}
+                       float) override
+    {}
 };
 
 } // namespace rive
diff --git a/include/utils/rive_utf.hpp b/include/utils/rive_utf.hpp
index 5e64c29..780292f 100644
--- a/include/utils/rive_utf.hpp
+++ b/include/utils/rive_utf.hpp
@@ -7,9 +7,11 @@
 
 #include "rive/render_text.hpp"
 
-namespace rive {
+namespace rive
+{
 
-class UTF {
+class UTF
+{
 public:
     // returns the number of bytes needed in this sequence
     // For ascii, this will return 1
diff --git a/rivinfo/main.cpp b/rivinfo/main.cpp
index 485d9f1..681bb7d 100644
--- a/rivinfo/main.cpp
+++ b/rivinfo/main.cpp
@@ -9,44 +9,57 @@
 #include "rive/animation/state_machine_input_instance.hpp"
 #include "utils/no_op_factory.hpp"
 
-class JSoner {
+class JSoner
+{
     std::vector<bool> m_IsArray;
 
-    void tab() {
-        for (int i = 0; i < m_IsArray.size(); ++i) {
+    void tab()
+    {
+        for (int i = 0; i < m_IsArray.size(); ++i)
+        {
             printf("\t");
         }
     }
-    void add_c(const char key[], char c) {
+    void add_c(const char key[], char c)
+    {
         this->tab();
-        if (key) {
+        if (key)
+        {
             printf("\"%s\": %c\n", key, c);
-        } else {
+        }
+        else
+        {
             printf("%c\n", c);
         }
     }
 
 public:
     JSoner() {}
-    ~JSoner() {
-        while (!m_IsArray.empty()) {
+    ~JSoner()
+    {
+        while (!m_IsArray.empty())
+        {
             this->pop();
         }
     }
 
-    void add(const char key[], const char value[]) {
+    void add(const char key[], const char value[])
+    {
         this->tab();
         printf("\"%s\": \"%s\"\n", key, value);
     }
-    void pushArray(const char key[] = nullptr) {
+    void pushArray(const char key[] = nullptr)
+    {
         this->add_c(key, '[');
         m_IsArray.push_back(true);
     }
-    void pushStruct(const char key[] = nullptr) {
+    void pushStruct(const char key[] = nullptr)
+    {
         this->add_c(key, '{');
         m_IsArray.push_back(false);
     }
-    void pop() {
+    void pop()
+    {
         assert(!m_IsArray.empty());
         char c = m_IsArray.front() ? ']' : '}';
         m_IsArray.pop_back();
@@ -60,7 +73,8 @@
 
 //////////////////////////////////////////////////
 
-static void dump(JSoner& js, rive::LinearAnimationInstance* anim) {
+static void dump(JSoner& js, rive::LinearAnimationInstance* anim)
+{
     js.pushStruct();
     js.add("name", anim->name().c_str());
     js.add("duration", std::to_string(anim->durationSeconds()).c_str());
@@ -68,12 +82,15 @@
     js.pop();
 }
 
-static void dump(JSoner& js, rive::StateMachineInstance* smi) {
+static void dump(JSoner& js, rive::StateMachineInstance* smi)
+{
     js.pushStruct();
     js.add("name", smi->name().c_str());
-    if (auto count = smi->inputCount()) {
+    if (auto count = smi->inputCount())
+    {
         js.pushArray("inputs");
-        for (auto i = 0; i < count; ++i) {
+        for (auto i = 0; i < count; ++i)
+        {
             auto inp = smi->input(i);
             js.add("name", inp->name().c_str());
         }
@@ -82,19 +99,24 @@
     js.pop();
 }
 
-static void dump(JSoner& js, rive::ArtboardInstance* abi) {
+static void dump(JSoner& js, rive::ArtboardInstance* abi)
+{
     js.pushStruct();
     js.add("name", abi->name().c_str());
-    if (auto count = abi->animationCount()) {
+    if (auto count = abi->animationCount())
+    {
         js.pushArray("animations");
-        for (size_t i = 0; i < count; ++i) {
+        for (size_t i = 0; i < count; ++i)
+        {
             dump(js, abi->animationAt(i).get());
         }
         js.pop();
     }
-    if (auto count = abi->stateMachineCount()) {
+    if (auto count = abi->stateMachineCount())
+    {
         js.pushArray("machines");
-        for (size_t i = 0; i < count; ++i) {
+        for (size_t i = 0; i < count; ++i)
+        {
             dump(js, abi->stateMachineAt(i).get());
         }
         js.pop();
@@ -102,18 +124,22 @@
     js.pop();
 }
 
-static void dump(JSoner& js, rive::File* file) {
+static void dump(JSoner& js, rive::File* file)
+{
     auto count = file->artboardCount();
     js.pushArray("artboards");
-    for (size_t i = 0; i < count; ++i) {
+    for (size_t i = 0; i < count; ++i)
+    {
         dump(js, file->artboardAt(i).get());
     }
     js.pop();
 }
 
-static std::unique_ptr<rive::File> open_file(const char name[]) {
+static std::unique_ptr<rive::File> open_file(const char name[])
+{
     FILE* f = fopen(name, "rb");
-    if (!f) {
+    if (!f)
+    {
         return nullptr;
     }
 
@@ -123,7 +149,8 @@
 
     std::vector<uint8_t> bytes(length);
 
-    if (fread(bytes.data(), 1, length, f) != length) {
+    if (fread(bytes.data(), 1, length, f) != length)
+    {
         printf("Failed to read file into bytes array\n");
         return nullptr;
     }
@@ -132,15 +159,19 @@
     return rive::File::import(bytes, &gFactory);
 }
 
-static bool is_arg(const char arg[], const char target[], const char alt[] = nullptr) {
+static bool is_arg(const char arg[], const char target[], const char alt[] = nullptr)
+{
     return !strcmp(arg, target) || (arg && !strcmp(arg, alt));
 }
 
-int main(int argc, const char* argv[]) {
+int main(int argc, const char* argv[])
+{
     const char* filename = nullptr;
 
-    for (int i = 1; i < argc; ++i) {
-        if (is_arg(argv[i], "--file", "-f")) {
+    for (int i = 1; i < argc; ++i)
+    {
+        if (is_arg(argv[i], "--file", "-f"))
+        {
             filename = argv[++i];
             continue;
         }
@@ -148,13 +179,15 @@
         return 1;
     }
 
-    if (!filename) {
+    if (!filename)
+    {
         printf("Need --file filename\n");
         return 1;
     }
 
     auto file = open_file(filename);
-    if (!file) {
+    if (!file)
+    {
         printf("Can't open %s\n", filename);
         return 1;
     }
diff --git a/skia/font_converter/src/font.cpp b/skia/font_converter/src/font.cpp
index 3f2107d..80a7eca 100644
--- a/skia/font_converter/src/font.cpp
+++ b/skia/font_converter/src/font.cpp
@@ -2,21 +2,26 @@
 #include "font.h"
 #include "include/core/SkFont.h"
 
-uint16_t RiveFont::charToGlyph(SkUnichar u) const {
-    for (size_t i = 0; i < fCMap.size(); ++i) {
-        if (fCMap[i].fChar == u) {
+uint16_t RiveFont::charToGlyph(SkUnichar u) const
+{
+    for (size_t i = 0; i < fCMap.size(); ++i)
+    {
+        if (fCMap[i].fChar == u)
+        {
             return fCMap[i].fGlyph;
         }
     }
     return 0;
 }
 
-float RiveFont::advance(uint16_t glyph) const {
+float RiveFont::advance(uint16_t glyph) const
+{
     assert(glyph < fGlyphs.size());
     return fGlyphs[glyph].fAdvance;
 }
 
-const SkPath* RiveFont::path(uint16_t glyph) const {
+const SkPath* RiveFont::path(uint16_t glyph) const
+{
     assert(glyph < fGlyphs.size());
     const SkPath& p = fGlyphs[glyph].fPath;
     return p.isEmpty() ? nullptr : &p;
@@ -25,7 +30,8 @@
 #define kSignature 0x23581321
 #define kVersion 1
 
-constexpr uint32_t Tag(unsigned a, unsigned b, unsigned c, unsigned d) {
+constexpr uint32_t Tag(unsigned a, unsigned b, unsigned c, unsigned d)
+{
     assert((a & 0xFF) == a);
     assert((b & 0xFF) == b);
     assert((c & 0xFF) == c);
@@ -33,7 +39,8 @@
     return (a << 24) | (b << 16) | (c << 8) | d;
 }
 
-static inline void tag_to_str(uint32_t tag, char str[5]) {
+static inline void tag_to_str(uint32_t tag, char str[5])
+{
     str[0] = (tag >> 24) & 0xFF;
     str[1] = (tag >> 16) & 0xFF;
     str[2] = (tag >> 8) & 0xFF;
@@ -47,13 +54,15 @@
 constexpr uint32_t kInfo_TableTag = Tag('i', 'n', 'f', 'o');
 constexpr uint32_t kAdvances_TableTag = Tag('h', 'a', 'd', 'v');
 
-struct TableDir {
+struct TableDir
+{
     uint32_t tag;
     uint32_t offset;
     uint32_t length;
 };
 
-struct FontHead {
+struct FontHead
+{
     uint32_t signature;
     uint32_t version;
     uint32_t tableCount;
@@ -61,10 +70,13 @@
 
     const TableDir* dir() const { return (const TableDir*)(this + 1); }
 
-    const void* findTable(uint32_t tag) const {
+    const void* findTable(uint32_t tag) const
+    {
         auto dir = this->dir();
-        for (unsigned i = 0; i < this->tableCount; ++i) {
-            if (dir[i].tag == tag) {
+        for (unsigned i = 0; i < this->tableCount; ++i)
+        {
+            if (dir[i].tag == tag)
+            {
                 return (char*)this + dir[i].offset;
             }
         }
@@ -72,16 +84,19 @@
     }
 };
 
-struct InfoTable {
+struct InfoTable
+{
     uint16_t glyphCount;
     uint16_t upem;
 };
 
-struct GlyphOffsetTable {
+struct GlyphOffsetTable
+{
     //  uint32_t offsets[glyphCount+1]; // relative to the glyphdata table
 };
 
-struct GlyphRec {
+struct GlyphRec
+{
     // uint16_t verbCount;
     // uint16_t pointCount; // if verbCount > 0
     // uint8_t  verbs;       // Move, Line, Quad, Cubic, Close
@@ -89,7 +104,8 @@
     // uint16_t x,y x,y x,y
 };
 
-void RiveFont::load(sk_sp<SkTypeface> tf, const char str[], size_t len) {
+void RiveFont::load(sk_sp<SkTypeface> tf, const char str[], size_t len)
+{
     this->clear();
 
     SkFont font(std::move(tf), 1.0f);
@@ -98,7 +114,8 @@
     int glyphCount = font.textToGlyphs(str, len, SkTextEncoding::kUTF8, glyphIDs, len);
     assert(glyphCount == (int)len);
 
-    struct Rec {
+    struct Rec
+    {
         uint16_t charCode;
         uint16_t srcGlyph;
         uint16_t dstGlyph;
@@ -106,22 +123,27 @@
     std::vector<Rec> rec;
     uint16_t newDstGlyphID = 1; // leave room for glyphID==0 for missing glyph
     // build vector of unique chars
-    for (size_t i = 0; i < len; ++i) {
+    for (size_t i = 0; i < len; ++i)
+    {
         uint16_t code = str[i];
         auto iter = std::find_if(rec.begin(), rec.end(), [code](const auto& r) {
             return r.charCode == code;
         });
-        if (iter == rec.end()) {
+        if (iter == rec.end())
+        {
             // gonna add code -- now see if its glyph is unique
             uint16_t srcGlyph = glyphIDs[i];
             auto it2 = std::find_if(rec.begin(), rec.end(), [srcGlyph](const auto& r) {
                 return r.srcGlyph == srcGlyph;
             });
             uint16_t dstGlyph;
-            if (it2 == rec.end()) {
+            if (it2 == rec.end())
+            {
                 // srcGlyph is unique (or zero)
                 dstGlyph = srcGlyph ? newDstGlyphID++ : 0;
-            } else {
+            }
+            else
+            {
                 dstGlyph = it2->dstGlyph; // reuse prev dstGlyph
             }
             rec.push_back({code, srcGlyph, dstGlyph});
@@ -131,7 +153,8 @@
     std::sort(rec.begin(), rec.end(), [](const Rec& a, const Rec& b) {
         return a.charCode < b.charCode;
     });
-    for (const auto& r : rec) {
+    for (const auto& r : rec)
+    {
         printf("'%c' [%d] %d -> %d\n", r.charCode, r.charCode, r.srcGlyph, r.dstGlyph);
         fCMap.push_back({r.charCode, r.dstGlyph});
     }
@@ -150,8 +173,9 @@
         fGlyphs.push_back({std::move(path), width});
     };
 
-    append_glyph(0);                          // missing glyph
-    for (int i = 1; i < newDstGlyphID; ++i) { // walk through our glyphs
+    append_glyph(0); // missing glyph
+    for (int i = 1; i < newDstGlyphID; ++i)
+    { // walk through our glyphs
         auto iter =
             std::find_if(rec.begin(), rec.end(), [i](const auto& r) { return r.dstGlyph == i; });
         assert(iter != rec.end());
@@ -159,72 +183,86 @@
     }
 }
 
-struct ByteBuilder {
+struct ByteBuilder
+{
     std::vector<uint8_t> bytes;
 
     uint32_t length() const { return bytes.size(); }
 
-    uint8_t add8(size_t x) {
+    uint8_t add8(size_t x)
+    {
         assert((x & 0xFF) == x);
         uint8_t b = (uint8_t)x;
         bytes.push_back(b);
         return b;
     }
-    int16_t addS16(ssize_t x) {
+    int16_t addS16(ssize_t x)
+    {
         int16_t s = (int16_t)x;
         assert(s == x);
         this->add(&s, 2);
         return s;
     }
-    uint16_t addU16(size_t x) {
+    uint16_t addU16(size_t x)
+    {
         assert((x & 0xFFFF) == x);
         uint16_t u = (uint16_t)x;
         this->add(&u, 2);
         return u;
     }
-    uint32_t addU32(size_t x) {
+    uint32_t addU32(size_t x)
+    {
         assert((x & 0xFFFFFFFF) == x);
         uint32_t u = (uint32_t)x;
         this->add(&u, 4);
         return u;
     }
 
-    void add(const void* src, size_t n) {
+    void add(const void* src, size_t n)
+    {
         size_t size = bytes.size();
         bytes.resize(size + n);
         memcpy(bytes.data() + size, src, n);
     }
-    template <typename T> void add(const std::vector<T>& v) {
+    template <typename T> void add(const std::vector<T>& v)
+    {
         this->add(v.data(), v.size() * sizeof(T));
     }
     void add(const ByteBuilder& bb) { this->add(bb.bytes.data(), bb.bytes.size()); }
     void add(sk_sp<SkData> data) { this->add(data->data(), data->size()); }
 
-    void padTo16() {
-        if (bytes.size() & 1) {
+    void padTo16()
+    {
+        if (bytes.size() & 1)
+        {
             this->add8(0);
         }
     }
-    void padTo32() {
-        while (bytes.size() & 3) {
+    void padTo32()
+    {
+        while (bytes.size() & 3)
+        {
             this->add8(0);
         }
     }
 
-    void set32(size_t offset, uint32_t value) {
+    void set32(size_t offset, uint32_t value)
+    {
         assert(offset + 4 <= bytes.size());
         assert((offset & 3) == 0);
         memcpy(bytes.data() + offset, &value, 4);
     }
 
-    sk_sp<SkData> detach() {
+    sk_sp<SkData> detach()
+    {
         auto data = SkData::MakeWithCopy(bytes.data(), bytes.size());
         bytes.clear();
         return data;
     }
 };
 
-void encode_path(ByteBuilder* bb, const SkPath& path, float scale) {
+void encode_path(ByteBuilder* bb, const SkPath& path, float scale)
+{
     std::vector<uint8_t> varray;
     std::vector<uint16_t> parray;
 
@@ -234,16 +272,23 @@
     };
 
     SkPath::RawIter iter(path);
-    for (;;) {
+    for (;;)
+    {
         SkPoint pts[4];
         auto verb = iter.next(pts);
-        if (verb == SkPath::kDone_Verb) {
+        if (verb == SkPath::kDone_Verb)
+        {
             break;
         }
         varray.push_back(verb);
-        switch ((SkPathVerb)verb) {
-            case SkPathVerb::kMove: add_point(pts[0]); break;
-            case SkPathVerb::kLine: add_point(pts[1]); break;
+        switch ((SkPathVerb)verb)
+        {
+            case SkPathVerb::kMove:
+                add_point(pts[0]);
+                break;
+            case SkPathVerb::kLine:
+                add_point(pts[1]);
+                break;
             case SkPathVerb::kQuad:
                 add_point(pts[1]);
                 add_point(pts[2]);
@@ -253,25 +298,32 @@
                 add_point(pts[2]);
                 add_point(pts[3]);
                 break;
-            case SkPathVerb::kClose: break;
-            default: assert(false); // unsupported
+            case SkPathVerb::kClose:
+                break;
+            default:
+                assert(false); // unsupported
         }
     }
     assert((int)varray.size() == path.countVerbs());
     assert((int)parray.size() == path.countPoints() * 2);
 
     auto no_useful_verbs = [](const std::vector<uint8_t>& verbs) {
-        for (auto v : verbs) {
-            switch ((SkPathVerb)v) {
+        for (auto v : verbs)
+        {
+            switch ((SkPathVerb)v)
+            {
                 case SkPathVerb::kLine:
                 case SkPathVerb::kQuad:
-                case SkPathVerb::kCubic: return false;
-                default: break;
+                case SkPathVerb::kCubic:
+                    return false;
+                default:
+                    break;
             }
         }
         return true;
     };
-    if (no_useful_verbs(varray)) {
+    if (no_useful_verbs(varray))
+    {
         return; // we signal empty paths with the offset table
     }
 
@@ -284,12 +336,14 @@
     bb->add(parray);
 }
 
-sk_sp<SkData> RiveFont::encode() const {
+sk_sp<SkData> RiveFont::encode() const
+{
     sk_sp<SkData> infoD, cmapD, offsetsD, pathsD;
     const int upem = 2048;
     const float scale = upem;
 
-    struct DirRec {
+    struct DirRec
+    {
         uint32_t tag;
         sk_sp<SkData> data;
     };
@@ -306,7 +360,8 @@
         ByteBuilder cmap;
         // start with #pairs
         cmap.addU16(fCMap.size());
-        for (const auto& cm : fCMap) {
+        for (const auto& cm : fCMap)
+        {
             cmap.addU16(cm.fChar);
             cmap.addU16(cm.fGlyph);
         }
@@ -317,7 +372,8 @@
     {
         ByteBuilder paths, advances;
         std::vector<uint32_t> offsets;
-        for (const auto& g : fGlyphs) {
+        for (const auto& g : fGlyphs)
+        {
             offsets.push_back(paths.length());
             encode_path(&paths, g.fPath, scale);
             paths.padTo16();
@@ -339,14 +395,16 @@
     header.addU32(kSignature);
     header.addU32(kVersion);
     header.addU32(dir.size());
-    for (auto& d : dir) {
+    for (auto& d : dir)
+    {
         header.addU32(d.tag);
         header.addU32(0); // offset -- fill in later
         header.addU32(d.data->size());
     }
 
     size_t offsetToDirEntry = sizeof(FontHead);
-    for (auto& d : dir) {
+    for (auto& d : dir)
+    {
         // +4 to skip the tag field of the dir entry
         header.set32(offsetToDirEntry + 4, header.length());
         offsetToDirEntry += sizeof(TableDir);
@@ -357,12 +415,14 @@
     return header.detach();
 }
 
-struct Reader {
+struct Reader
+{
     const char* fStart;
     const char* fCurr;
     const char* fStop;
 
-    Reader(const void* data, size_t length) {
+    Reader(const void* data, size_t length)
+    {
         fStart = (const char*)data;
         fCurr = fStart;
         fStop = fStart + length;
@@ -371,7 +431,8 @@
     bool isAvailable(size_t n) const { return fCurr + n <= fStop; }
     size_t available() const { return fStop - fCurr; }
 
-    template <typename T> const T* skip(size_t size) {
+    template <typename T> const T* skip(size_t size)
+    {
         assert(this->isAvailable(size));
         const char* p = fCurr;
         fCurr += size;
@@ -382,26 +443,30 @@
 
     void skip(size_t size) {}
 
-    uint8_t u8() {
+    uint8_t u8()
+    {
         assert(this->isAvailable(1));
         return *fCurr++;
     }
 
-    int16_t s16() {
+    int16_t s16()
+    {
         assert(this->isAvailable(2));
         int16_t s;
         memcpy(&s, fCurr, 2);
         fCurr += 2;
         return s;
     }
-    uint16_t u16() {
+    uint16_t u16()
+    {
         assert(this->isAvailable(2));
         uint16_t s;
         memcpy(&s, fCurr, 2);
         fCurr += 2;
         return s;
     }
-    uint32_t u32() {
+    uint32_t u32()
+    {
         assert(this->isAvailable(4));
         uint32_t s;
         memcpy(&s, fCurr, 4);
@@ -409,37 +474,56 @@
         return s;
     }
 
-    void read(void* dst, size_t size) {
+    void read(void* dst, size_t size)
+    {
         assert(this->isAvailable(size));
         memcpy(dst, fCurr, size);
         fCurr += size;
     }
 
-    void skipPad16() {
+    void skipPad16()
+    {
         size_t amount = fCurr - fStart;
-        if (amount & 1) {
+        if (amount & 1)
+        {
             assert(this->isAvailable(1));
             fCurr += 1;
         }
     }
 };
 
-static int compute_point_count(const uint8_t verbs[], int verbCount) {
+static int compute_point_count(const uint8_t verbs[], int verbCount)
+{
     int count = 0;
-    for (int i = 0; i < verbCount; ++i) {
-        switch ((SkPathVerb)verbs[i]) {
-            case SkPathVerb::kMove: count += 1; break;
-            case SkPathVerb::kLine: count += 1; break;
-            case SkPathVerb::kQuad: count += 2; break;
-            case SkPathVerb::kCubic: count += 3; break;
-            case SkPathVerb::kClose: count += 0; break;
-            default: assert(false); return -1;
+    for (int i = 0; i < verbCount; ++i)
+    {
+        switch ((SkPathVerb)verbs[i])
+        {
+            case SkPathVerb::kMove:
+                count += 1;
+                break;
+            case SkPathVerb::kLine:
+                count += 1;
+                break;
+            case SkPathVerb::kQuad:
+                count += 2;
+                break;
+            case SkPathVerb::kCubic:
+                count += 3;
+                break;
+            case SkPathVerb::kClose:
+                count += 0;
+                break;
+            default:
+                assert(false);
+                return -1;
         }
     }
     return count;
 }
 
-static SkPath decode_path(const void* data, size_t length, float scale) {
+static SkPath decode_path(const void* data, size_t length, float scale)
+{
     Reader reader(data, length);
 
     const int verbCount = reader.u16();
@@ -455,7 +539,8 @@
     assert(reader.available() == 0);
 
     SkPoint pts[pointCount];
-    for (int i = 0; i < pointCount; ++i) {
+    for (int i = 0; i < pointCount; ++i)
+    {
         pts[i] = {pts16[0] * scale, pts16[1] * scale};
         pts16 += 2;
     }
@@ -463,7 +548,8 @@
     return SkPath::Make(pts, pointCount, verbs, verbCount, nullptr, 0, SkPathFillType::kWinding);
 }
 
-bool RiveFont::decode(const void* data, size_t length) {
+bool RiveFont::decode(const void* data, size_t length)
+{
     Reader reader(data, length);
 
     auto font = reader.skip<FontHead>();
@@ -473,9 +559,11 @@
 
     assert(reader.isAvailable(font->tableCount * sizeof(TableDir)));
 
-    if (true) {
+    if (true)
+    {
         auto dir = font->dir();
-        for (unsigned i = 0; i < font->tableCount; ++i) {
+        for (unsigned i = 0; i < font->tableCount; ++i)
+        {
             char str[5];
             tag_to_str(dir[i].tag, str);
             printf("[%d] {%0x08 %s %10d} %d %d\n",
@@ -499,7 +587,8 @@
     this->clear();
 
     const int pairCount = *cmap++;
-    for (int i = 0; i < pairCount; ++i) {
+    for (int i = 0; i < pairCount; ++i)
+    {
         uint16_t c = *cmap++;
         uint16_t g = *cmap++;
         assert(g < glyphCount);
@@ -509,7 +598,8 @@
 
     const float scale = 1.0f / (float)info->upem;
 
-    for (int i = 0; i < glyphCount; ++i) {
+    for (int i = 0; i < glyphCount; ++i)
+    {
         float adv = advances[i] * scale;
         uint32_t start = offsets[i];
         uint32_t end = offsets[i + 1];
diff --git a/skia/font_converter/src/font.h b/skia/font_converter/src/font.h
index 52069bd..de6bd02 100644
--- a/skia/font_converter/src/font.h
+++ b/skia/font_converter/src/font.h
@@ -6,14 +6,17 @@
 #include "include/core/SkTypeface.h"
 #include <vector>
 
-class RiveFont {
-    struct Pair {
+class RiveFont
+{
+    struct Pair
+    {
         uint16_t fChar;
         uint16_t fGlyph;
     };
     std::vector<Pair> fCMap;
 
-    struct Glyph {
+    struct Glyph
+    {
         SkPath fPath;
         float fAdvance;
     };
@@ -24,7 +27,8 @@
     float advance(uint16_t glyph) const;
     const SkPath* path(uint16_t glyph) const;
 
-    void clear() {
+    void clear()
+    {
         fCMap.clear();
         fGlyphs.clear();
     }
diff --git a/skia/font_converter/src/font_arguments.hpp b/skia/font_converter/src/font_arguments.hpp
index 65fee6a..c4f95f2 100644
--- a/skia/font_converter/src/font_arguments.hpp
+++ b/skia/font_converter/src/font_arguments.hpp
@@ -7,11 +7,13 @@
 
 #include "args.hxx"
 
-class FontArguments {
+class FontArguments
+{
 
 public:
     FontArguments(int argc, const char** argv) :
-        m_Parser("Convert a font file into the rive format.", "Experimental....") {
+        m_Parser("Convert a font file into the rive format.", "Experimental....")
+    {
         args::HelpFlag help(m_Parser, "help", "Display this help menu", {'h', "help"});
         args::Group required(m_Parser, "required arguments:", args::Group::Validators::All);
         args::Group optional(m_Parser, "optional arguments:", args::Group::Validators::DontCare);
@@ -27,22 +29,33 @@
                                              {'c', "charset"});
 
         args::CompletionFlag completion(m_Parser, {"complete"});
-        try {
+        try
+        {
             m_Parser.ParseCLI(argc, argv);
-        } catch (const std::invalid_argument e) {
+        }
+        catch (const std::invalid_argument e)
+        {
             std::cout << e.what();
             throw;
-        } catch (const args::Completion& e) {
+        }
+        catch (const args::Completion& e)
+        {
             std::cout << e.what();
             throw;
-        } catch (const args::Help&) {
+        }
+        catch (const args::Help&)
+        {
             std::cout << m_Parser;
             throw;
-        } catch (const args::ParseError& e) {
+        }
+        catch (const args::ParseError& e)
+        {
             std::cerr << e.what() << std::endl;
             std::cerr << m_Parser;
             throw;
-        } catch (args::ValidationError e) {
+        }
+        catch (args::ValidationError e)
+        {
             std::cerr << e.what() << std::endl;
             std::cerr << m_Parser;
             throw;
diff --git a/skia/font_converter/src/main.cpp b/skia/font_converter/src/main.cpp
index acdeeb1..32ed66e 100644
--- a/skia/font_converter/src/main.cpp
+++ b/skia/font_converter/src/main.cpp
@@ -9,10 +9,12 @@
 #include "include/core/SkTypeface.h"
 #include <vector>
 
-static std::vector<char> readFile(const char path[]) {
+static std::vector<char> readFile(const char path[])
+{
     FILE* fp = fopen(path, "rb");
 
-    if (fp == nullptr) {
+    if (fp == nullptr)
+    {
         fclose(fp);
         std::ostringstream errorStream;
         errorStream << "Failed to open file " << path;
@@ -25,7 +27,8 @@
     std::vector<char> data;
     data.resize(length);
 
-    if (fread(data.data(), 1, length, fp) != length) {
+    if (fread(data.data(), 1, length, fp) != length)
+    {
         fclose(fp);
         std::ostringstream errorStream;
         errorStream << "Failed to read file into bytes array " << path;
@@ -36,38 +39,47 @@
     return data;
 }
 
-static void writeFile(const char path[], const void* bytes, size_t length) {
+static void writeFile(const char path[], const void* bytes, size_t length)
+{
     FILE* pFile = fopen(path, "wb");
     fwrite(bytes, sizeof(char), length, pFile);
     fclose(pFile);
 }
 
-static std::vector<char> build_default_charset() {
+static std::vector<char> build_default_charset()
+{
     std::vector<char> charset;
-    for (int i = 32; i < 127; ++i) {
+    for (int i = 32; i < 127; ++i)
+    {
         charset.push_back(i);
     }
     return charset;
 }
 
-int main(int argc, const char* argv[]) {
-    try {
+int main(int argc, const char* argv[])
+{
+    try
+    {
         FontArguments args(argc, argv);
         sk_sp<SkTypeface> typeface;
 
         auto src = readFile(args.source().c_str());
         auto srcData = SkData::MakeWithCopy(src.data(), src.size());
         typeface = SkTypeface::MakeFromData(srcData);
-        if (!typeface) {
+        if (!typeface)
+        {
             fprintf(stderr, "Failed to convert file to SkTypeface\n");
             return 1;
         }
 
         std::vector<char> charset;
         auto charsetFile = args.charset();
-        if (charsetFile.size() > 0) {
+        if (charsetFile.size() > 0)
+        {
             charset = readFile(args.charset().c_str());
-        } else {
+        }
+        else
+        {
             charset = build_default_charset();
         }
 
@@ -77,13 +89,21 @@
         auto dst = font.encode();
 
         writeFile(args.destination().c_str(), dst->data(), dst->size());
-    } catch (const args::Completion& e) {
+    }
+    catch (const args::Completion& e)
+    {
         return 0;
-    } catch (const args::Help&) {
+    }
+    catch (const args::Help&)
+    {
         return 0;
-    } catch (const args::ParseError& e) {
+    }
+    catch (const args::ParseError& e)
+    {
         return 1;
-    } catch (args::ValidationError e) {
+    }
+    catch (args::ValidationError e)
+    {
         return 1;
     }
 
diff --git a/skia/renderer/include/cg_factory.hpp b/skia/renderer/include/cg_factory.hpp
index 140a7f0..0e88428 100644
--- a/skia/renderer/include/cg_factory.hpp
+++ b/skia/renderer/include/cg_factory.hpp
@@ -8,9 +8,11 @@
 #include "rive/factory.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 
-class CGFactory : public Factory {
+class CGFactory : public Factory
+{
 public:
     rcp<RenderBuffer> makeBufferU16(Span<const uint16_t>) override;
     rcp<RenderBuffer> makeBufferU32(Span<const uint32_t>) override;
diff --git a/skia/renderer/include/cg_renderer.hpp b/skia/renderer/include/cg_renderer.hpp
index a174c92..7329e4d 100644
--- a/skia/renderer/include/cg_renderer.hpp
+++ b/skia/renderer/include/cg_renderer.hpp
@@ -14,8 +14,10 @@
 #include <ImageIO/ImageIO.h>
 #endif
 
-namespace rive {
-class CGRenderer : public Renderer {
+namespace rive
+{
+class CGRenderer : public Renderer
+{
 protected:
     CGContextRef m_ctx;
 
diff --git a/skia/renderer/include/cg_skia_factory.hpp b/skia/renderer/include/cg_skia_factory.hpp
index 9f0f120..cb36b91 100644
--- a/skia/renderer/include/cg_skia_factory.hpp
+++ b/skia/renderer/include/cg_skia_factory.hpp
@@ -7,8 +7,10 @@
 
 #include "skia_factory.hpp"
 
-namespace rive {
-struct CGSkiaFactory : public SkiaFactory {
+namespace rive
+{
+struct CGSkiaFactory : public SkiaFactory
+{
     std::vector<uint8_t> platformDecode(Span<const uint8_t>, SkiaFactory::ImageInfo*) override;
 };
 } // namespace rive
diff --git a/skia/renderer/include/mac_utils.hpp b/skia/renderer/include/mac_utils.hpp
index fe59ec4..13a9b3f 100644
--- a/skia/renderer/include/mac_utils.hpp
+++ b/skia/renderer/include/mac_utils.hpp
@@ -14,37 +14,45 @@
 #include <CoreGraphics/CGImage.h>
 #endif
 
-template <size_t N, typename T> class AutoSTArray {
+template <size_t N, typename T> class AutoSTArray
+{
     T m_storage[N];
     T* m_ptr;
     const size_t m_count;
 
 public:
-    AutoSTArray(size_t n) : m_count(n) {
+    AutoSTArray(size_t n) : m_count(n)
+    {
         m_ptr = m_storage;
-        if (n > N) {
+        if (n > N)
+        {
             m_ptr = new T[n];
         }
     }
-    ~AutoSTArray() {
-        if (m_ptr != m_storage) {
+    ~AutoSTArray()
+    {
+        if (m_ptr != m_storage)
+        {
             delete[] m_ptr;
         }
     }
 
     T* data() const { return m_ptr; }
 
-    T& operator[](size_t index) {
+    T& operator[](size_t index)
+    {
         assert(index < m_count);
         return m_ptr[index];
     }
 };
 
-constexpr inline uint32_t make_tag(uint8_t a, uint8_t b, uint8_t c, uint8_t d) {
+constexpr inline uint32_t make_tag(uint8_t a, uint8_t b, uint8_t c, uint8_t d)
+{
     return (a << 24) | (b << 16) | (c << 8) | d;
 }
 
-static inline std::string tag2str(uint32_t tag) {
+static inline std::string tag2str(uint32_t tag)
+{
     std::string str = "abcd";
     str[0] = (tag >> 24) & 0xFF;
     str[1] = (tag >> 16) & 0xFF;
@@ -53,33 +61,43 @@
     return str;
 }
 
-template <typename T> class AutoCF {
+template <typename T> class AutoCF
+{
     T m_obj;
 
 public:
     AutoCF(T obj = nullptr) : m_obj(obj) {}
-    AutoCF(const AutoCF& other) {
-        if (other.m_obj) {
+    AutoCF(const AutoCF& other)
+    {
+        if (other.m_obj)
+        {
             CFRetain(other.m_obj);
         }
         m_obj = other.m_obj;
     }
-    AutoCF(AutoCF&& other) {
+    AutoCF(AutoCF&& other)
+    {
         m_obj = other.m_obj;
         other.m_obj = nullptr;
     }
-    ~AutoCF() {
-        if (m_obj) {
+    ~AutoCF()
+    {
+        if (m_obj)
+        {
             CFRelease(m_obj);
         }
     }
 
-    AutoCF& operator=(const AutoCF& other) {
-        if (m_obj != other.m_obj) {
-            if (other.m_obj) {
+    AutoCF& operator=(const AutoCF& other)
+    {
+        if (m_obj != other.m_obj)
+        {
+            if (other.m_obj)
+            {
                 CFRetain(other.m_obj);
             }
-            if (m_obj) {
+            if (m_obj)
+            {
                 CFRelease(m_obj);
             }
             m_obj = other.m_obj;
@@ -87,9 +105,12 @@
         return *this;
     }
 
-    void reset(T obj) {
-        if (obj != m_obj) {
-            if (m_obj) {
+    void reset(T obj)
+    {
+        if (obj != m_obj)
+        {
+            if (m_obj)
+            {
                 CFRelease(m_obj);
             }
             m_obj = obj;
@@ -101,7 +122,8 @@
     T get() const { return m_obj; }
 };
 
-static inline float find_float(CFDictionaryRef dict, const void* key) {
+static inline float find_float(CFDictionaryRef dict, const void* key)
+{
     auto num = (CFNumberRef)CFDictionaryGetValue(dict, key);
     assert(num);
     float value = 0;
@@ -109,7 +131,8 @@
     return value;
 }
 
-static inline uint32_t find_u32(CFDictionaryRef dict, const void* key) {
+static inline uint32_t find_u32(CFDictionaryRef dict, const void* key)
+{
     auto num = (CFNumberRef)CFDictionaryGetValue(dict, key);
     assert(num);
     assert(!CFNumberIsFloatType(num));
@@ -118,19 +141,22 @@
     return value;
 }
 
-static inline uint32_t number_as_u32(CFNumberRef num) {
+static inline uint32_t number_as_u32(CFNumberRef num)
+{
     uint32_t value;
     CFNumberGetValue(num, kCFNumberSInt32Type, &value);
     return value;
 }
 
-static inline float number_as_float(CFNumberRef num) {
+static inline float number_as_float(CFNumberRef num)
+{
     float value;
     CFNumberGetValue(num, kCFNumberFloat32Type, &value);
     return value;
 }
 
-namespace rive {
+namespace rive
+{
 AutoCF<CGImageRef> DecodeToCGImage(Span<const uint8_t>);
 AutoCF<CGImageRef> FlipCGImageInY(AutoCF<CGImageRef>);
 } // namespace rive
diff --git a/skia/renderer/include/renderfont_coretext.hpp b/skia/renderer/include/renderfont_coretext.hpp
index 9f2b5cb..de13daf 100644
--- a/skia/renderer/include/renderfont_coretext.hpp
+++ b/skia/renderer/include/renderfont_coretext.hpp
@@ -14,7 +14,8 @@
 #include <CoreText/CoreText.h>
 #endif
 
-class CoreTextRenderFont : public rive::RenderFont {
+class CoreTextRenderFont : public rive::RenderFont
+{
 public:
     CTFontRef m_font;
     const std::vector<Axis> m_axes;
diff --git a/skia/renderer/include/skia_factory.hpp b/skia/renderer/include/skia_factory.hpp
index af7f9aa..c12722c 100644
--- a/skia/renderer/include/skia_factory.hpp
+++ b/skia/renderer/include/skia_factory.hpp
@@ -8,9 +8,11 @@
 #include "rive/factory.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 
-class SkiaFactory : public Factory {
+class SkiaFactory : public Factory
+{
 public:
     rcp<RenderBuffer> makeBufferU16(Span<const uint16_t>) override;
     rcp<RenderBuffer> makeBufferU32(Span<const uint32_t>) override;
@@ -43,15 +45,18 @@
     // New virtual for access the platform's codecs
     //
 
-    enum class ColorType {
+    enum class ColorType
+    {
         rgba,
         bgra,
     };
-    enum class AlphaType {
+    enum class AlphaType
+    {
         premul,
         opaque,
     };
-    struct ImageInfo {
+    struct ImageInfo
+    {
         size_t rowBytes; // number of bytes between rows
         uint32_t width;  // logical width in pixels
         uint32_t height; // logical height in pixels
@@ -62,7 +67,8 @@
     // Clients can override this to provide access to the platform's decoders, rather
     // than solely relying on the codecs built into Skia. This allows for the Skia impl
     // to not have to duplicate the code for codecs that the platform may already have.
-    virtual std::vector<uint8_t> platformDecode(Span<const uint8_t>, ImageInfo* info) {
+    virtual std::vector<uint8_t> platformDecode(Span<const uint8_t>, ImageInfo* info)
+    {
         return std::vector<uint8_t>(); // empty vector means decode failed
     }
 };
diff --git a/skia/renderer/include/skia_renderer.hpp b/skia/renderer/include/skia_renderer.hpp
index 5afc87b..3fd557b 100644
--- a/skia/renderer/include/skia_renderer.hpp
+++ b/skia/renderer/include/skia_renderer.hpp
@@ -9,8 +9,10 @@
 
 class SkCanvas;
 
-namespace rive {
-class SkiaRenderer : public Renderer {
+namespace rive
+{
+class SkiaRenderer : public Renderer
+{
 protected:
     SkCanvas* m_Canvas;
 
diff --git a/skia/renderer/include/to_skia.hpp b/skia/renderer/include/to_skia.hpp
index 06e7a43..99e7b4b 100644
--- a/skia/renderer/include/to_skia.hpp
+++ b/skia/renderer/include/to_skia.hpp
@@ -19,10 +19,13 @@
 #include "rive/shapes/paint/stroke_join.hpp"
 #include "rive/shapes/paint/blend_mode.hpp"
 
-namespace rive {
-class ToSkia {
+namespace rive
+{
+class ToSkia
+{
 public:
-    static SkMatrix convert(const rive::Mat2D& m) {
+    static SkMatrix convert(const rive::Mat2D& m)
+    {
         return SkMatrix::MakeAll(m[0], m[2], m[4], m[1], m[3], m[5], 0, 0, 1);
     }
 
diff --git a/skia/renderer/src/cg_factory.cpp b/skia/renderer/src/cg_factory.cpp
index 5deea2a..c31af51 100644
--- a/skia/renderer/src/cg_factory.cpp
+++ b/skia/renderer/src/cg_factory.cpp
@@ -24,16 +24,19 @@
 
 using namespace rive;
 
-static CGAffineTransform convert(const Mat2D& m) {
+static CGAffineTransform convert(const Mat2D& m)
+{
     return CGAffineTransformMake(m[0], m[1], m[2], m[3], m[4], m[5]);
 }
 
-static CGPathDrawingMode convert(FillRule rule) {
+static CGPathDrawingMode convert(FillRule rule)
+{
     return (rule == FillRule::nonZero) ? CGPathDrawingMode::kCGPathFill
                                        : CGPathDrawingMode::kCGPathEOFill;
 }
 
-static CGLineJoin convert(StrokeJoin j) {
+static CGLineJoin convert(StrokeJoin j)
+{
     const CGLineJoin cg[] = {
         CGLineJoin::kCGLineJoinMiter,
         CGLineJoin::kCGLineJoinRound,
@@ -42,7 +45,8 @@
     return cg[(unsigned)j];
 }
 
-static CGLineCap convert(StrokeCap c) {
+static CGLineCap convert(StrokeCap c)
+{
     const CGLineCap cg[] = {
         CGLineCap::kCGLineCapButt,
         CGLineCap::kCGLineCapRound,
@@ -76,7 +80,8 @@
 }
 // clang-format on
 
-static void convertColor(ColorInt c, CGFloat rgba[]) {
+static void convertColor(ColorInt c, CGFloat rgba[])
+{
     constexpr float kByteToUnit = 1.0f / 255;
     rgba[0] = colorRed(c) * kByteToUnit;
     rgba[1] = colorGreen(c) * kByteToUnit;
@@ -84,7 +89,8 @@
     rgba[3] = colorAlpha(c) * kByteToUnit;
 }
 
-class CGRenderPath : public RenderPath {
+class CGRenderPath : public RenderPath
+{
 private:
     AutoCF<CGMutablePathRef> m_path = CGPathCreateMutable();
     CGPathDrawingMode m_fillMode = CGPathDrawingMode::kCGPathFill;
@@ -92,12 +98,15 @@
 public:
     CGRenderPath() {}
 
-    CGRenderPath(Span<const Vec2D> pts, Span<const PathVerb> vbs, FillRule rule) {
+    CGRenderPath(Span<const Vec2D> pts, Span<const PathVerb> vbs, FillRule rule)
+    {
         m_fillMode = convert(rule);
 
         auto p = pts.data();
-        for (auto v : vbs) {
-            switch ((PathVerb)v) {
+        for (auto v : vbs)
+        {
+            switch ((PathVerb)v)
+            {
                 case PathVerb::move:
                     CGPathMoveToPoint(m_path, nullptr, p[0].x, p[0].y);
                     p += 1;
@@ -121,35 +130,42 @@
                                           p[2].y);
                     p += 3;
                     break;
-                case PathVerb::close: CGPathCloseSubpath(m_path); break;
+                case PathVerb::close:
+                    CGPathCloseSubpath(m_path);
+                    break;
             }
         }
         assert(p == pts.end());
     }
 
     CGPathRef path() const { return m_path.get(); }
-    CGPathDrawingMode drawingMode(bool isStroke) const {
+    CGPathDrawingMode drawingMode(bool isStroke) const
+    {
         return isStroke ? CGPathDrawingMode::kCGPathStroke : m_fillMode;
     }
 
     void reset() override { m_path.reset(CGPathCreateMutable()); }
-    void addRenderPath(RenderPath* path, const Mat2D& mx) override {
+    void addRenderPath(RenderPath* path, const Mat2D& mx) override
+    {
         auto transform = convert(mx);
         CGPathAddPath(m_path, &transform, ((CGRenderPath*)path)->path());
     }
-    void fillRule(FillRule value) override {
+    void fillRule(FillRule value) override
+    {
         m_fillMode = (value == FillRule::nonZero) ? CGPathDrawingMode::kCGPathFill
                                                   : CGPathDrawingMode::kCGPathEOFill;
     }
     void moveTo(float x, float y) override { CGPathMoveToPoint(m_path, nullptr, x, y); }
     void lineTo(float x, float y) override { CGPathAddLineToPoint(m_path, nullptr, x, y); }
-    void cubicTo(float ox, float oy, float ix, float iy, float x, float y) override {
+    void cubicTo(float ox, float oy, float ix, float iy, float x, float y) override
+    {
         CGPathAddCurveToPoint(m_path, nullptr, ox, oy, ix, iy, x, y);
     }
     void close() override { CGPathCloseSubpath(m_path); }
 };
 
-class CGRenderShader : public RenderShader {
+class CGRenderShader : public RenderShader
+{
 public:
     CGRenderShader() {}
 
@@ -159,7 +175,8 @@
     virtual void draw(CGContextRef) {}
 };
 
-class CGRenderPaint : public RenderPaint {
+class CGRenderPaint : public RenderPaint
+{
 private:
     bool m_isStroke = false;
     CGFloat m_rgba[4] = {0, 0, 0, 1};
@@ -177,19 +194,24 @@
 
     CGRenderShader* shader() const { return static_cast<CGRenderShader*>(m_shader.get()); }
 
-    void apply(CGContextRef ctx) {
-        if (m_isStroke) {
+    void apply(CGContextRef ctx)
+    {
+        if (m_isStroke)
+        {
             CGContextSetRGBStrokeColor(ctx, m_rgba[0], m_rgba[1], m_rgba[2], m_rgba[3]);
             CGContextSetLineWidth(ctx, m_width);
             CGContextSetLineJoin(ctx, m_join);
             CGContextSetLineCap(ctx, m_cap);
-        } else {
+        }
+        else
+        {
             CGContextSetRGBFillColor(ctx, m_rgba[0], m_rgba[1], m_rgba[2], m_rgba[3]);
         }
         CGContextSetBlendMode(ctx, m_blend);
     }
 
-    void style(RenderPaintStyle style) override {
+    void style(RenderPaintStyle style) override
+    {
         m_isStroke = (style == RenderPaintStyle::stroke);
     }
     void color(ColorInt value) override { convertColor(value, m_rgba); }
@@ -201,13 +223,15 @@
     void invalidateStroke() override {}
 };
 
-static CGGradientRef convert(const ColorInt colors[], const float stops[], size_t count) {
+static CGGradientRef convert(const ColorInt colors[], const float stops[], size_t count)
+{
     AutoCF space = CGColorSpaceCreateDeviceRGB();
     std::vector<CGFloat> floats(count * 5); // colors[4] + stops[1]
     auto c = &floats[0];
     auto s = &floats[count * 4];
 
-    for (size_t i = 0; i < count; ++i) {
+    for (size_t i = 0; i < count; ++i)
+    {
         convertColor(colors[i], &c[i * 4]);
 
         // Rive wants the colors to be premultiplied *after* interpolation
@@ -223,15 +247,18 @@
         p[1] *= p[3];
         p[2] *= p[3];
     }
-    if (stops) {
-        for (size_t i = 0; i < count; ++i) {
+    if (stops)
+    {
+        for (size_t i = 0; i < count; ++i)
+        {
             s[i] = stops[i];
         }
     }
     return CGGradientCreateWithColorComponents(space, c, s, count);
 }
 
-class CGRadialGradientRenderShader : public CGRenderShader {
+class CGRadialGradientRenderShader : public CGRenderShader
+{
     AutoCF<CGGradientRef> m_grad;
     CGPoint m_center;
     CGFloat m_radius;
@@ -243,17 +270,20 @@
                                  const ColorInt colors[],
                                  const float stops[],
                                  size_t count) :
-        m_grad(convert(colors, stops, count)) {
+        m_grad(convert(colors, stops, count))
+    {
         m_center = CGPointMake(cx, cy);
         m_radius = radius;
     }
 
-    void draw(CGContextRef ctx) override {
+    void draw(CGContextRef ctx) override
+    {
         CGContextDrawRadialGradient(ctx, m_grad, m_center, 0, m_center, m_radius, clampOptions);
     }
 };
 
-class CGLinearGradientRenderShader : public CGRenderShader {
+class CGLinearGradientRenderShader : public CGRenderShader
+{
     AutoCF<CGGradientRef> m_grad;
     CGPoint m_start, m_end;
 
@@ -265,22 +295,27 @@
                                  const ColorInt colors[], // [count]
                                  const float stops[],     // [count]
                                  size_t count) :
-        m_grad(convert(colors, stops, count)) {
+        m_grad(convert(colors, stops, count))
+    {
         m_start = CGPointMake(sx, sy);
         m_end = CGPointMake(ex, ey);
     }
 
-    void draw(CGContextRef ctx) override {
+    void draw(CGContextRef ctx) override
+    {
         CGContextDrawLinearGradient(ctx, m_grad, m_start, m_end, clampOptions);
     }
 };
 
-class CGRenderImage : public RenderImage {
+class CGRenderImage : public RenderImage
+{
 public:
     AutoCF<CGImageRef> m_image;
 
-    CGRenderImage(const Span<const uint8_t> span) : m_image(DecodeToCGImage(span)) {
-        if (m_image) {
+    CGRenderImage(const Span<const uint8_t> span) : m_image(DecodeToCGImage(span))
+    {
+        if (m_image)
+        {
             m_Width = rive::castTo<uint32_t>(CGImageGetWidth(m_image.get()));
             m_Height = rive::castTo<uint32_t>(CGImageGetHeight(m_image.get()));
         }
@@ -288,18 +323,21 @@
 
     Mat2D localM2D() const { return Mat2D(1, 0, 0, -1, 0, (float)m_Height); }
 
-    void applyLocalMatrix(CGContextRef ctx) const {
+    void applyLocalMatrix(CGContextRef ctx) const
+    {
         CGContextConcatCTM(ctx, CGAffineTransformMake(1, 0, 0, -1, 0, (float)m_Height));
     }
 
-    static const CGRenderImage* Cast(const RenderImage* image) {
+    static const CGRenderImage* Cast(const RenderImage* image)
+    {
         return reinterpret_cast<const CGRenderImage*>(image);
     }
 };
 
 //////////////////////////////////////////////////////////////////////////
 
-CGRenderer::CGRenderer(CGContextRef ctx, int width, int height) : m_ctx(ctx) {
+CGRenderer::CGRenderer(CGContextRef ctx, int width, int height) : m_ctx(ctx)
+{
     CGContextSaveGState(ctx);
 
     Mat2D m(1, 0, 0, -1, 0, height);
@@ -316,7 +354,8 @@
 
 void CGRenderer::transform(const Mat2D& m) { CGContextConcatCTM(m_ctx, convert(m)); }
 
-void CGRenderer::drawPath(RenderPath* path, RenderPaint* paint) {
+void CGRenderer::drawPath(RenderPath* path, RenderPaint* paint)
+{
     auto cgpaint = reinterpret_cast<CGRenderPaint*>(paint);
     auto cgpath = reinterpret_cast<CGRenderPath*>(path);
 
@@ -324,8 +363,10 @@
 
     CGContextBeginPath(m_ctx);
     CGContextAddPath(m_ctx, cgpath->path());
-    if (auto sh = cgpaint->shader()) {
-        if (cgpaint->isStroke()) {
+    if (auto sh = cgpaint->shader())
+    {
+        if (cgpaint->isStroke())
+        {
             // so we can clip against the "stroke" of the path
             CGContextReplacePathWithStrokedPath(m_ctx);
         }
@@ -337,14 +378,17 @@
 
         sh->draw(m_ctx);
         CGContextRestoreGState(m_ctx);
-    } else {
+    }
+    else
+    {
         CGContextDrawPath(m_ctx, cgpath->drawingMode(cgpaint->isStroke()));
     }
 
     assert(CGContextIsPathEmpty(m_ctx));
 }
 
-void CGRenderer::clipPath(RenderPath* path) {
+void CGRenderer::clipPath(RenderPath* path)
+{
     auto cgpath = reinterpret_cast<CGRenderPath*>(path);
 
     CGContextBeginPath(m_ctx);
@@ -352,7 +396,8 @@
     CGContextClip(m_ctx);
 }
 
-void CGRenderer::drawImage(const RenderImage* image, BlendMode blendMode, float opacity) {
+void CGRenderer::drawImage(const RenderImage* image, BlendMode blendMode, float opacity)
+{
     auto bounds = CGRectMake(0, 0, image->width(), image->height());
 
     CGContextSaveGState(m_ctx);
@@ -364,7 +409,8 @@
     CGContextRestoreGState(m_ctx);
 }
 
-static Mat2D basis_matrix(Vec2D p0, Vec2D p1, Vec2D p2) {
+static Mat2D basis_matrix(Vec2D p0, Vec2D p1, Vec2D p2)
+{
     auto e0 = p1 - p0;
     auto e1 = p2 - p0;
     return Mat2D(e0.x, e0.y, e1.x, e1.y, p0.x, p0.y);
@@ -375,7 +421,8 @@
                                rcp<RenderBuffer> uvCoords,
                                rcp<RenderBuffer> indices,
                                BlendMode blendMode,
-                               float opacity) {
+                               float opacity)
+{
     auto cgimage = CGRenderImage::Cast(image);
     auto const localMatrix = cgimage->localM2D();
 
@@ -400,7 +447,8 @@
     CGContextSetBlendMode(m_ctx, convert(blendMode));
     CGContextSetShouldAntialias(m_ctx, false);
 
-    for (size_t i = 0; i < triangles; ++i) {
+    for (size_t i = 0; i < triangles; ++i)
+    {
         const auto index0 = *ndx++;
         const auto index1 = *ndx++;
         const auto index2 = *ndx++;
@@ -431,15 +479,18 @@
 
 // Factory
 
-rcp<RenderBuffer> CGFactory::makeBufferU16(Span<const uint16_t> data) {
+rcp<RenderBuffer> CGFactory::makeBufferU16(Span<const uint16_t> data)
+{
     return DataRenderBuffer::Make(data);
 }
 
-rcp<RenderBuffer> CGFactory::makeBufferU32(Span<const uint32_t> data) {
+rcp<RenderBuffer> CGFactory::makeBufferU32(Span<const uint32_t> data)
+{
     return DataRenderBuffer::Make(data);
 }
 
-rcp<RenderBuffer> CGFactory::makeBufferF32(Span<const float> data) {
+rcp<RenderBuffer> CGFactory::makeBufferF32(Span<const float> data)
+{
     return DataRenderBuffer::Make(data);
 }
 
@@ -449,7 +500,8 @@
                                                 float ey,
                                                 const ColorInt colors[], // [count]
                                                 const float stops[],     // [count]
-                                                size_t count) {
+                                                size_t count)
+{
     return rcp<RenderShader>(
         new CGLinearGradientRenderShader(sx, sy, ex, ey, colors, stops, count));
 }
@@ -459,24 +511,29 @@
                                                 float radius,
                                                 const ColorInt colors[], // [count]
                                                 const float stops[],     // [count]
-                                                size_t count) {
+                                                size_t count)
+{
     return rcp<RenderShader>(
         new CGRadialGradientRenderShader(cx, cy, radius, colors, stops, count));
 }
 
-std::unique_ptr<RenderPath> CGFactory::makeRenderPath(RawPath& rawPath, FillRule fillRule) {
+std::unique_ptr<RenderPath> CGFactory::makeRenderPath(RawPath& rawPath, FillRule fillRule)
+{
     return std::make_unique<CGRenderPath>(rawPath.points(), rawPath.verbs(), fillRule);
 }
 
-std::unique_ptr<RenderPath> CGFactory::makeEmptyRenderPath() {
+std::unique_ptr<RenderPath> CGFactory::makeEmptyRenderPath()
+{
     return std::make_unique<CGRenderPath>();
 }
 
-std::unique_ptr<RenderPaint> CGFactory::makeRenderPaint() {
+std::unique_ptr<RenderPaint> CGFactory::makeRenderPaint()
+{
     return std::make_unique<CGRenderPaint>();
 }
 
-std::unique_ptr<RenderImage> CGFactory::decodeImage(Span<const uint8_t> encoded) {
+std::unique_ptr<RenderImage> CGFactory::decodeImage(Span<const uint8_t> encoded)
+{
     return std::make_unique<CGRenderImage>(encoded);
 }
 
diff --git a/skia/renderer/src/cg_skia_factory.cpp b/skia/renderer/src/cg_skia_factory.cpp
index 57352d9..5a4395a 100644
--- a/skia/renderer/src/cg_skia_factory.cpp
+++ b/skia/renderer/src/cg_skia_factory.cpp
@@ -20,29 +20,38 @@
 using namespace rive;
 
 std::vector<uint8_t> CGSkiaFactory::platformDecode(Span<const uint8_t> span,
-                                                   SkiaFactory::ImageInfo* info) {
+                                                   SkiaFactory::ImageInfo* info)
+{
     std::vector<uint8_t> pixels;
 
     AutoCF image = DecodeToCGImage(span);
-    if (!image) {
+    if (!image)
+    {
         return pixels;
     }
 
     bool isOpaque = false;
-    switch (CGImageGetAlphaInfo(image.get())) {
+    switch (CGImageGetAlphaInfo(image.get()))
+    {
         case kCGImageAlphaNone:
         case kCGImageAlphaNoneSkipFirst:
-        case kCGImageAlphaNoneSkipLast: isOpaque = true; break;
-        default: break;
+        case kCGImageAlphaNoneSkipLast:
+            isOpaque = true;
+            break;
+        default:
+            break;
     }
 
     // Now create a drawing context to produce RGBA pixels
 
     const size_t bitsPerComponent = 8;
     CGBitmapInfo cgInfo = kCGBitmapByteOrder32Big; // rgba
-    if (isOpaque) {
+    if (isOpaque)
+    {
         cgInfo |= kCGImageAlphaNoneSkipLast;
-    } else {
+    }
+    else
+    {
         cgInfo |= kCGImageAlphaPremultipliedLast; // premul
     }
     const size_t width = CGImageGetWidth(image);
@@ -55,7 +64,8 @@
     AutoCF cs = CGColorSpaceCreateDeviceRGB();
     AutoCF cg =
         CGBitmapContextCreate(pixels.data(), width, height, bitsPerComponent, rowBytes, cs, cgInfo);
-    if (!cg) {
+    if (!cg)
+    {
         pixels.clear();
         return pixels;
     }
diff --git a/skia/renderer/src/mac_utils.cpp b/skia/renderer/src/mac_utils.cpp
index 893207c..89944d0 100644
--- a/skia/renderer/src/mac_utils.cpp
+++ b/skia/renderer/src/mac_utils.cpp
@@ -11,8 +11,10 @@
 #include <ImageIO/CGImageSource.h>
 #endif
 
-AutoCF<CGImageRef> rive::FlipCGImageInY(AutoCF<CGImageRef> image) {
-    if (!image) {
+AutoCF<CGImageRef> rive::FlipCGImageInY(AutoCF<CGImageRef> image)
+{
+    if (!image)
+    {
         return nullptr;
     }
 
@@ -26,21 +28,25 @@
     return CGBitmapContextCreateImage(ctx);
 }
 
-AutoCF<CGImageRef> rive::DecodeToCGImage(rive::Span<const uint8_t> span) {
+AutoCF<CGImageRef> rive::DecodeToCGImage(rive::Span<const uint8_t> span)
+{
     AutoCF data = CFDataCreate(nullptr, span.data(), span.size());
-    if (!data) {
+    if (!data)
+    {
         printf("CFDataCreate failed\n");
         return nullptr;
     }
 
     AutoCF source = CGImageSourceCreateWithData(data, nullptr);
-    if (!source) {
+    if (!source)
+    {
         printf("CGImageSourceCreateWithData failed\n");
         return nullptr;
     }
 
     AutoCF image = CGImageSourceCreateImageAtIndex(source, 0, nullptr);
-    if (!image) {
+    if (!image)
+    {
         printf("CGImageSourceCreateImageAtIndex failed\n");
     }
     return image;
diff --git a/skia/renderer/src/renderfont_coretext.cpp b/skia/renderer/src/renderfont_coretext.cpp
index 8cf73e9..36771da 100644
--- a/skia/renderer/src/renderfont_coretext.cpp
+++ b/skia/renderer/src/renderfont_coretext.cpp
@@ -25,14 +25,17 @@
 constexpr int kStdScale = 2048;
 constexpr float gInvScale = 1.0f / kStdScale;
 
-static std::vector<rive::RenderFont::Axis> compute_axes(CTFontRef font) {
+static std::vector<rive::RenderFont::Axis> compute_axes(CTFontRef font)
+{
     std::vector<rive::RenderFont::Axis> axes;
 
     AutoCF array = CTFontCopyVariationAxes(font);
-    if (auto count = array.get() ? CFArrayGetCount(array.get()) : 0) {
+    if (auto count = array.get() ? CFArrayGetCount(array.get()) : 0)
+    {
         axes.reserve(count);
 
-        for (auto i = 0; i < count; ++i) {
+        for (auto i = 0; i < count; ++i)
+        {
             auto axis = (CFDictionaryRef)CFArrayGetValueAtIndex(array, i);
 
             auto tag = find_u32(axis, kCTFontVariationAxisIdentifierKey);
@@ -47,19 +50,23 @@
     return axes;
 }
 
-static std::vector<rive::RenderFont::Coord> compute_coords(CTFontRef font) {
+static std::vector<rive::RenderFont::Coord> compute_coords(CTFontRef font)
+{
     std::vector<rive::RenderFont::Coord> coords(0);
     AutoCF dict = CTFontCopyVariation(font);
-    if (dict) {
+    if (dict)
+    {
         int count = CFDictionaryGetCount(dict);
-        if (count > 0) {
+        if (count > 0)
+        {
             coords.resize(count);
 
             AutoSTArray<100, const void*> ptrs(count * 2);
             const void** keys = &ptrs[0];
             const void** values = &ptrs[count];
             CFDictionaryGetKeysAndValues(dict, keys, values);
-            for (int i = 0; i < count; ++i) {
+            for (int i = 0; i < count; ++i)
+            {
                 uint32_t tag = number_as_u32((CFNumberRef)keys[i]);
                 float value = number_as_float((CFNumberRef)values[i]);
                 //                printf("[%d] %08X %s %g\n", i, tag, tag2str(tag).c_str(), value);
@@ -70,7 +77,8 @@
     return coords;
 }
 
-static rive::RenderFont::LineMetrics make_lmx(CTFontRef font) {
+static rive::RenderFont::LineMetrics make_lmx(CTFontRef font)
+{
     return {
         (float)-CTFontGetAscent(font) * gInvScale,
         (float)CTFontGetDescent(font) * gInvScale,
@@ -81,16 +89,19 @@
     rive::RenderFont(make_lmx(font)),
     m_font(font), // we take ownership of font
     m_axes(std::move(axes)),
-    m_coords(compute_coords(font)) {}
+    m_coords(compute_coords(font))
+{}
 
 CoreTextRenderFont::~CoreTextRenderFont() { CFRelease(m_font); }
 
-rive::rcp<rive::RenderFont> CoreTextRenderFont::makeAtCoords(rive::Span<const Coord> coords) const {
+rive::rcp<rive::RenderFont> CoreTextRenderFont::makeAtCoords(rive::Span<const Coord> coords) const
+{
     AutoCF vars = CFDictionaryCreateMutable(kCFAllocatorDefault,
                                             coords.size(),
                                             &kCFTypeDictionaryKeyCallBacks,
                                             &kCFTypeDictionaryValueCallBacks);
-    for (const auto& c : coords) {
+    for (const auto& c : coords)
+    {
         AutoCF tagNum = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &c.axis);
         AutoCF valueNum = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat32Type, &c.value);
         CFDictionaryAddValue(vars.get(), tagNum.get(), valueNum.get());
@@ -109,7 +120,8 @@
     return rive::rcp<rive::RenderFont>(new CoreTextRenderFont(font, compute_axes(font)));
 }
 
-static CTFontRef font_from_run(CTRunRef run) {
+static CTFontRef font_from_run(CTRunRef run)
+{
     auto attr = CTRunGetAttributes(run);
     assert(attr);
     CTFontRef ct = (CTFontRef)CFDictionaryGetValue(attr, kCTFontAttributeName);
@@ -118,23 +130,31 @@
 }
 
 static rive::rcp<rive::RenderFont> convert_to_renderfont(CTFontRef ct,
-                                                         rive::rcp<rive::RenderFont> rf) {
+                                                         rive::rcp<rive::RenderFont> rf)
+{
     auto ctrf = static_cast<CoreTextRenderFont*>(rf.get());
-    if (ctrf->m_font == ct) {
+    if (ctrf->m_font == ct)
+    {
         return rf;
     }
     CFRetain(ct);
     return rive::rcp<rive::RenderFont>(new CoreTextRenderFont(ct, compute_axes(ct)));
 }
 
-static void apply_element(void* ctx, const CGPathElement* element) {
+static void apply_element(void* ctx, const CGPathElement* element)
+{
     auto path = (rive::RawPath*)ctx;
     const CGPoint* points = element->points;
 
-    switch (element->type) {
-        case kCGPathElementMoveToPoint: path->moveTo(points[0].x, points[0].y); break;
+    switch (element->type)
+    {
+        case kCGPathElementMoveToPoint:
+            path->moveTo(points[0].x, points[0].y);
+            break;
 
-        case kCGPathElementAddLineToPoint: path->lineTo(points[0].x, points[0].y); break;
+        case kCGPathElementAddLineToPoint:
+            path->lineTo(points[0].x, points[0].y);
+            break;
 
         case kCGPathElementAddQuadCurveToPoint:
             path->quadTo(points[0].x, points[0].y, points[1].x, points[1].y);
@@ -149,17 +169,23 @@
                           points[2].y);
             break;
 
-        case kCGPathElementCloseSubpath: path->close(); break;
+        case kCGPathElementCloseSubpath:
+            path->close();
+            break;
 
-        default: assert(false); break;
+        default:
+            assert(false);
+            break;
     }
 }
 
-rive::RawPath CoreTextRenderFont::getPath(rive::GlyphID glyph) const {
+rive::RawPath CoreTextRenderFont::getPath(rive::GlyphID glyph) const
+{
     rive::RawPath rpath;
 
     AutoCF cgPath = CTFontCreatePathForGlyph(m_font, glyph, nullptr);
-    if (!cgPath) {
+    if (!cgPath)
+    {
         return rpath;
     }
 
@@ -170,25 +196,30 @@
 
 ////////////////////////////////////////////////////////////////////////////////////
 
-struct AutoUTF16 {
+struct AutoUTF16
+{
     std::vector<uint16_t> array;
 
-    AutoUTF16(const rive::Unichar uni[], int count) {
+    AutoUTF16(const rive::Unichar uni[], int count)
+    {
         array.reserve(count);
-        for (int i = 0; i < count; ++i) {
+        for (int i = 0; i < count; ++i)
+        {
             uint16_t tmp[2];
             int n = rive::UTF::ToUTF16(uni[i], tmp);
 
-            for (int i = 0; i < n; ++i) {
+            for (int i = 0; i < n; ++i)
+            {
                 array.push_back(tmp[i]);
             }
         }
     }
 };
 
-static rive::RenderGlyphRun
-add_run(CTRunRef run, uint32_t textStart, float textSize, float& startX) {
-    if (auto count = CTRunGetGlyphCount(run)) {
+static rive::RenderGlyphRun add_run(CTRunRef run, uint32_t textStart, float textSize, float& startX)
+{
+    if (auto count = CTRunGetGlyphCount(run))
+    {
         const float scale = textSize * gInvScale;
 
         rive::RenderGlyphRun gr(count);
@@ -202,7 +233,8 @@
         CTRunGetAdvances(run, {0, count}, advances.data());
         CTRunGetStringIndices(run, {0, count}, indices.data());
 
-        for (CFIndex i = 0; i < count; ++i) {
+        for (CFIndex i = 0; i < count; ++i)
+        {
             gr.xpos[i] = startX;
             gr.textIndices[i] = textStart + indices[i]; // utf16 offsets, will fix-up later
             startX += advances[i].width * scale;
@@ -215,12 +247,14 @@
 
 rive::SimpleArray<rive::RenderGlyphRun>
 CoreTextRenderFont::onShapeText(rive::Span<const rive::Unichar> text,
-                                rive::Span<const rive::RenderTextRun> truns) const {
+                                rive::Span<const rive::RenderTextRun> truns) const
+{
     rive::SimpleArrayBuilder<rive::RenderGlyphRun> gruns(truns.size());
 
     uint32_t textIndex = 0;
     float startX = 0;
-    for (const auto& tr : truns) {
+    for (const auto& tr : truns)
+    {
         CTFontRef font = ((CoreTextRenderFont*)tr.font.get())->m_font;
 
         AutoUTF16 utf16(&text[textIndex], tr.unicharCount);
@@ -246,10 +280,12 @@
 
         CFArrayRef run_array = CTLineGetGlyphRuns(line.get());
         CFIndex runCount = CFArrayGetCount(run_array);
-        for (CFIndex i = 0; i < runCount; ++i) {
+        for (CFIndex i = 0; i < runCount; ++i)
+        {
             CTRunRef runref = (CTRunRef)CFArrayGetValueAtIndex(run_array, i);
             rive::RenderGlyphRun grun = add_run(runref, textIndex, tr.size, startX);
-            if (grun.glyphs.size() > 0) {
+            if (grun.glyphs.size() > 0)
+            {
                 auto ct = font_from_run(runref);
                 grun.font = convert_to_renderfont(ct, tr.font);
                 grun.size = tr.size;
@@ -264,25 +300,33 @@
 
 ////////////////////////////////////////////////////////////////////////////////////////////////
 
-rive::rcp<rive::RenderFont> CoreTextRenderFont::FromCT(CTFontRef ctfont) {
-    if (!ctfont) {
+rive::rcp<rive::RenderFont> CoreTextRenderFont::FromCT(CTFontRef ctfont)
+{
+    if (!ctfont)
+    {
         return nullptr;
     }
 
     // We always want the ctfont at our magic size
-    if (CTFontGetSize(ctfont) != kStdScale) {
+    if (CTFontGetSize(ctfont) != kStdScale)
+    {
         ctfont = CTFontCreateCopyWithAttributes(ctfont, kStdScale, nullptr, nullptr);
-    } else {
+    }
+    else
+    {
         CFRetain(ctfont);
     }
 
     // Apple may have secretly set the opsz axis based on the size. We want to undo this
     // since our stdsize isn't really the size we'll show it at.
     auto axes = compute_axes(ctfont);
-    if (axes.size() > 0) {
+    if (axes.size() > 0)
+    {
         constexpr uint32_t kOPSZ = make_tag('o', 'p', 's', 'z');
-        for (const auto& ax : axes) {
-            if (ax.tag == kOPSZ) {
+        for (const auto& ax : axes)
+        {
+            if (ax.tag == kOPSZ)
+            {
                 auto xform = CGAffineTransformMakeScale(kStdScale / ax.def, kStdScale / ax.def);
                 // Recreate the font at this size, but with a balancing transform,
                 // so we get the 'default' shapes w.r.t. the opsz axis
@@ -297,15 +341,18 @@
     return rive::rcp<rive::RenderFont>(new CoreTextRenderFont(ctfont, std::move(axes)));
 }
 
-rive::rcp<rive::RenderFont> CoreTextRenderFont::Decode(rive::Span<const uint8_t> span) {
+rive::rcp<rive::RenderFont> CoreTextRenderFont::Decode(rive::Span<const uint8_t> span)
+{
     AutoCF data = CFDataCreate(nullptr, span.data(), span.size()); // makes a copy
-    if (!data) {
+    if (!data)
+    {
         assert(false);
         return nullptr;
     }
 
     AutoCF desc = CTFontManagerCreateFontDescriptorFromData(data.get());
-    if (!desc) {
+    if (!desc)
+    {
         assert(false);
         return nullptr;
     }
@@ -314,7 +361,8 @@
 
     AutoCF ctfont =
         CTFontCreateWithFontDescriptorAndOptions(desc.get(), kStdScale, nullptr, options);
-    if (!ctfont) {
+    if (!ctfont)
+    {
         assert(false);
         return nullptr;
     }
diff --git a/skia/renderer/src/skia_factory.cpp b/skia/renderer/src/skia_factory.cpp
index a03ca7b..802b6f3 100644
--- a/skia/renderer/src/skia_factory.cpp
+++ b/skia/renderer/src/skia_factory.cpp
@@ -24,7 +24,8 @@
 // skia's has/had bugs in trilerp, so backing down to nearest mip
 const SkSamplingOptions gSampling(SkFilterMode::kLinear, SkMipmapMode::kNearest);
 
-class SkiaRenderPath : public RenderPath {
+class SkiaRenderPath : public RenderPath
+{
 private:
     SkPath m_Path;
 
@@ -43,7 +44,8 @@
     virtual void close() override;
 };
 
-class SkiaRenderPaint : public RenderPaint {
+class SkiaRenderPaint : public RenderPaint
+{
 private:
     SkPaint m_Paint;
 
@@ -62,7 +64,8 @@
     void invalidateStroke() override {}
 };
 
-class SkiaRenderImage : public RenderImage {
+class SkiaRenderImage : public RenderImage
+{
 private:
     sk_sp<SkImage> m_SkImage;
 
@@ -72,7 +75,8 @@
     sk_sp<SkImage> skImage() const { return m_SkImage; }
 };
 
-class SkiaRenderShader : public RenderShader {
+class SkiaRenderShader : public RenderShader
+{
 public:
     SkiaRenderShader(sk_sp<SkShader> sh) : shader(std::move(sh)) {}
 
@@ -82,23 +86,31 @@
 void SkiaRenderPath::fillRule(FillRule value) { m_Path.setFillType(ToSkia::convert(value)); }
 
 void SkiaRenderPath::reset() { m_Path.reset(); }
-void SkiaRenderPath::addRenderPath(RenderPath* path, const Mat2D& transform) {
+void SkiaRenderPath::addRenderPath(RenderPath* path, const Mat2D& transform)
+{
     m_Path.addPath(reinterpret_cast<SkiaRenderPath*>(path)->m_Path, ToSkia::convert(transform));
 }
 
 void SkiaRenderPath::moveTo(float x, float y) { m_Path.moveTo(x, y); }
 void SkiaRenderPath::lineTo(float x, float y) { m_Path.lineTo(x, y); }
-void SkiaRenderPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y) {
+void SkiaRenderPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y)
+{
     m_Path.cubicTo(ox, oy, ix, iy, x, y);
 }
 void SkiaRenderPath::close() { m_Path.close(); }
 
 SkiaRenderPaint::SkiaRenderPaint() { m_Paint.setAntiAlias(true); }
 
-void SkiaRenderPaint::style(RenderPaintStyle style) {
-    switch (style) {
-        case RenderPaintStyle::fill: m_Paint.setStyle(SkPaint::Style::kFill_Style); break;
-        case RenderPaintStyle::stroke: m_Paint.setStyle(SkPaint::Style::kStroke_Style); break;
+void SkiaRenderPaint::style(RenderPaintStyle style)
+{
+    switch (style)
+    {
+        case RenderPaintStyle::fill:
+            m_Paint.setStyle(SkPaint::Style::kFill_Style);
+            break;
+        case RenderPaintStyle::stroke:
+            m_Paint.setStyle(SkPaint::Style::kStroke_Style);
+            break;
     }
 }
 void SkiaRenderPaint::color(unsigned int value) { m_Paint.setColor(value); }
@@ -108,26 +120,31 @@
 
 void SkiaRenderPaint::blendMode(BlendMode value) { m_Paint.setBlendMode(ToSkia::convert(value)); }
 
-void SkiaRenderPaint::shader(rcp<RenderShader> rsh) {
+void SkiaRenderPaint::shader(rcp<RenderShader> rsh)
+{
     SkiaRenderShader* sksh = (SkiaRenderShader*)rsh.get();
     m_Paint.setShader(sksh ? sksh->shader : nullptr);
 }
 
 void SkiaRenderer::save() { m_Canvas->save(); }
 void SkiaRenderer::restore() { m_Canvas->restore(); }
-void SkiaRenderer::transform(const Mat2D& transform) {
+void SkiaRenderer::transform(const Mat2D& transform)
+{
     m_Canvas->concat(ToSkia::convert(transform));
 }
-void SkiaRenderer::drawPath(RenderPath* path, RenderPaint* paint) {
+void SkiaRenderer::drawPath(RenderPath* path, RenderPaint* paint)
+{
     m_Canvas->drawPath(reinterpret_cast<SkiaRenderPath*>(path)->path(),
                        reinterpret_cast<SkiaRenderPaint*>(paint)->paint());
 }
 
-void SkiaRenderer::clipPath(RenderPath* path) {
+void SkiaRenderer::clipPath(RenderPath* path)
+{
     m_Canvas->clipPath(reinterpret_cast<SkiaRenderPath*>(path)->path(), true);
 }
 
-void SkiaRenderer::drawImage(const RenderImage* image, BlendMode blendMode, float opacity) {
+void SkiaRenderer::drawImage(const RenderImage* image, BlendMode blendMode, float opacity)
+{
     SkPaint paint;
     paint.setAlphaf(opacity);
     paint.setBlendMode(ToSkia::convert(blendMode));
@@ -142,7 +159,8 @@
                                  rcp<RenderBuffer> uvCoords,
                                  rcp<RenderBuffer> indices,
                                  BlendMode blendMode,
-                                 float opacity) {
+                                 float opacity)
+{
     // need our vertices and uvs to agree
     assert(vertices->count() == uvCoords->count());
     // vertices and uvs are arrays of floats, so we need their counts to be
@@ -159,7 +177,8 @@
     // The local matrix is ignored for drawVertices, so we have to manually scale
     // the UVs to match Skia's convention...
     std::vector<SkPoint> scaledUVs(vertexCount);
-    for (int i = 0; i < vertexCount; ++i) {
+    for (int i = 0; i < vertexCount; ++i)
+    {
         scaledUVs[i] = {uvs[i].fX * image->width(), uvs[i].fY * image->height()};
     }
     uvs = scaledUVs.data();
@@ -195,22 +214,26 @@
     m_Canvas->drawVertices(vt, SkBlendMode::kModulate, paint);
 }
 
-SkiaRenderImage::SkiaRenderImage(sk_sp<SkImage> image) : m_SkImage(std::move(image)) {
+SkiaRenderImage::SkiaRenderImage(sk_sp<SkImage> image) : m_SkImage(std::move(image))
+{
     m_Width = m_SkImage->width();
     m_Height = m_SkImage->height();
 }
 
 // Factory
 
-rcp<RenderBuffer> SkiaFactory::makeBufferU16(Span<const uint16_t> data) {
+rcp<RenderBuffer> SkiaFactory::makeBufferU16(Span<const uint16_t> data)
+{
     return DataRenderBuffer::Make(data);
 }
 
-rcp<RenderBuffer> SkiaFactory::makeBufferU32(Span<const uint32_t> data) {
+rcp<RenderBuffer> SkiaFactory::makeBufferU32(Span<const uint32_t> data)
+{
     return DataRenderBuffer::Make(data);
 }
 
-rcp<RenderBuffer> SkiaFactory::makeBufferF32(Span<const float> data) {
+rcp<RenderBuffer> SkiaFactory::makeBufferF32(Span<const float> data)
+{
     return DataRenderBuffer::Make(data);
 }
 
@@ -220,7 +243,8 @@
                                                   float ey,
                                                   const ColorInt colors[], // [count]
                                                   const float stops[],     // [count]
-                                                  size_t count) {
+                                                  size_t count)
+{
     const SkPoint pts[] = {{sx, sy}, {ex, ey}};
     auto sh =
         SkGradientShader::MakeLinear(pts, (const SkColor*)colors, stops, count, SkTileMode::kClamp);
@@ -232,7 +256,8 @@
                                                   float radius,
                                                   const ColorInt colors[], // [count]
                                                   const float stops[],     // [count]
-                                                  size_t count) {
+                                                  size_t count)
+{
     auto sh = SkGradientShader::MakeRadial({cx, cy},
                                            radius,
                                            (const SkColor*)colors,
@@ -242,7 +267,8 @@
     return rcp<RenderShader>(new SkiaRenderShader(std::move(sh)));
 }
 
-std::unique_ptr<RenderPath> SkiaFactory::makeRenderPath(RawPath& rawPath, FillRule fillRule) {
+std::unique_ptr<RenderPath> SkiaFactory::makeRenderPath(RawPath& rawPath, FillRule fillRule)
+{
     const bool isVolatile = false; // ???
     const SkScalar* conicWeights = nullptr;
     const int conicWeightCount = 0;
@@ -257,27 +283,34 @@
                      isVolatile));
 }
 
-std::unique_ptr<RenderPath> SkiaFactory::makeEmptyRenderPath() {
+std::unique_ptr<RenderPath> SkiaFactory::makeEmptyRenderPath()
+{
     return std::make_unique<SkiaRenderPath>();
 }
 
-std::unique_ptr<RenderPaint> SkiaFactory::makeRenderPaint() {
+std::unique_ptr<RenderPaint> SkiaFactory::makeRenderPaint()
+{
     return std::make_unique<SkiaRenderPaint>();
 }
 
-std::unique_ptr<RenderImage> SkiaFactory::decodeImage(Span<const uint8_t> encoded) {
+std::unique_ptr<RenderImage> SkiaFactory::decodeImage(Span<const uint8_t> encoded)
+{
     sk_sp<SkData> data = SkData::MakeWithoutCopy(encoded.data(), encoded.size());
     auto image = SkImage::MakeFromEncoded(data);
 
-    if (image) {
+    if (image)
+    {
         // Our optimized skia buld seems to have broken lazy-image decode.
         // As a work-around for now, force the image to be decoded.
         image = image->makeRasterImage();
-    } else {
+    }
+    else
+    {
         // Skia failed, so let's try the platform
         ImageInfo info;
         auto pixels = this->platformDecode(encoded, &info);
-        if (pixels.size() > 0) {
+        if (pixels.size() > 0)
+        {
             auto ct =
                 info.colorType == ColorType::rgba ? kRGBA_8888_SkColorType : kBGRA_8888_SkColorType;
             auto at =
diff --git a/skia/thumbnail_generator/src/main.cpp b/skia/thumbnail_generator/src/main.cpp
index f804338..2a6af9c 100644
--- a/skia/thumbnail_generator/src/main.cpp
+++ b/skia/thumbnail_generator/src/main.cpp
@@ -12,7 +12,8 @@
 #include <iostream>
 #include <sstream>
 
-std::string getFileName(char* path) {
+std::string getFileName(char* path)
+{
     std::string str(path);
 
     const size_t from = str.find_last_of("\\/");
@@ -22,21 +23,27 @@
 
 const int DEFAULT_SIZE = 256;
 
-int getArg(char* arg) {
+int getArg(char* arg)
+{
     std::istringstream ss(arg);
     int x;
-    if (!(ss >> x)) {
+    if (!(ss >> x))
+    {
         std::cerr << "Invalid number: " << arg << '\n';
-    } else if (!ss.eof()) {
+    }
+    else if (!ss.eof())
+    {
         std::cerr << "Trailing chars after number: " << arg << '\n';
     }
     return x == 0 ? DEFAULT_SIZE : x;
 }
 
-int main(int argc, char* argv[]) {
+int main(int argc, char* argv[])
+{
     rive::SkiaFactory factory;
 
-    if (argc < 2) {
+    if (argc < 2)
+    {
         fprintf(stderr, "must pass source file");
         return 1;
     }
@@ -45,21 +52,26 @@
     const char* outPath;
     std::string filename;
     std::string fullName;
-    if (argc > 2) {
+    if (argc > 2)
+    {
         outPath = argv[2];
-    } else {
+    }
+    else
+    {
         filename = getFileName(argv[1]);
         fullName = filename + ".png";
         outPath = fullName.c_str();
     }
 
     int width = DEFAULT_SIZE, height = DEFAULT_SIZE;
-    if (argc == 5) {
+    if (argc == 5)
+    {
         width = getArg(argv[3]);
         height = getArg(argv[4]);
     }
 
-    if (fp == nullptr) {
+    if (fp == nullptr)
+    {
         fprintf(stderr, "Failed to open rive file.\n");
         return 1;
     }
@@ -67,7 +79,8 @@
     auto length = ftell(fp);
     fseek(fp, 0, SEEK_SET);
     std::vector<uint8_t> bytes(length);
-    if (fread(bytes.data(), 1, length, fp) != length) {
+    if (fread(bytes.data(), 1, length, fp) != length)
+    {
         fprintf(stderr, "Failed to read rive file.\n");
         fclose(fp);
         return 1;
@@ -75,7 +88,8 @@
     fclose(fp);
 
     auto file = rive::File::import(bytes, &factory);
-    if (!file) {
+    if (!file)
+    {
         fprintf(stderr, "Failed to read rive file.\n");
         return 1;
     }
@@ -95,11 +109,13 @@
     renderer.restore();
 
     sk_sp<SkImage> img(rasterSurface->makeImageSnapshot());
-    if (!img) {
+    if (!img)
+    {
         return 1;
     }
     sk_sp<SkData> png(img->encodeToData());
-    if (!png) {
+    if (!png)
+    {
         return 1;
     }
     SkFILEWStream out(outPath);
diff --git a/src/animation/animation_state.cpp b/src/animation/animation_state.cpp
index b8f92d1..342ed42 100644
--- a/src/animation/animation_state.cpp
+++ b/src/animation/animation_state.cpp
@@ -6,6 +6,7 @@
 
 using namespace rive;
 
-std::unique_ptr<StateInstance> AnimationState::makeInstance(ArtboardInstance* instance) const {
+std::unique_ptr<StateInstance> AnimationState::makeInstance(ArtboardInstance* instance) const
+{
     return std::make_unique<AnimationStateInstance>(this, instance);
 }
diff --git a/src/animation/animation_state_instance.cpp b/src/animation/animation_state_instance.cpp
index 6365708..e3c972d 100644
--- a/src/animation/animation_state_instance.cpp
+++ b/src/animation/animation_state_instance.cpp
@@ -16,9 +16,11 @@
     // cause bad casts in parts of the code where we assumed AnimationStates
     // would have create AnimationStateInstances.
     m_AnimationInstance(state->animation() ? state->animation() : &emptyAnimation, instance),
-    m_KeepGoing(true) {}
+    m_KeepGoing(true)
+{}
 
-void AnimationStateInstance::advance(float seconds, Span<SMIInput*>) {
+void AnimationStateInstance::advance(float seconds, Span<SMIInput*>)
+{
     m_KeepGoing = m_AnimationInstance.advance(seconds);
 }
 
diff --git a/src/animation/blend_animation.cpp b/src/animation/blend_animation.cpp
index 737491d..3c43ce2 100644
--- a/src/animation/blend_animation.cpp
+++ b/src/animation/blend_animation.cpp
@@ -6,22 +6,28 @@
 
 using namespace rive;
 
-StatusCode BlendAnimation::import(ImportStack& importStack) {
+StatusCode BlendAnimation::import(ImportStack& importStack)
+{
     auto importer = importStack.latest<LayerStateImporter>(LayerStateBase::typeKey);
-    if (importer == nullptr) {
+    if (importer == nullptr)
+    {
         return StatusCode::MissingObject;
-    } else if (!importer->addBlendAnimation(this)) {
+    }
+    else if (!importer->addBlendAnimation(this))
+    {
         return StatusCode::InvalidObject;
     }
 
     auto artboardImporter = importStack.latest<ArtboardImporter>(ArtboardBase::typeKey);
-    if (artboardImporter == nullptr) {
+    if (artboardImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
 
     auto artboard = artboardImporter->artboard();
     size_t animationCount = artboard->animationCount();
-    if ((size_t)animationId() < animationCount) {
+    if ((size_t)animationId() < animationCount)
+    {
         m_Animation = artboardImporter->artboard()->animation(animationId());
     }
 
diff --git a/src/animation/blend_animation_direct.cpp b/src/animation/blend_animation_direct.cpp
index 0fe8e1b..98861a9 100644
--- a/src/animation/blend_animation_direct.cpp
+++ b/src/animation/blend_animation_direct.cpp
@@ -9,18 +9,22 @@
 
 StatusCode BlendAnimationDirect::onAddedClean(CoreContext* context) { return StatusCode::Ok; }
 
-StatusCode BlendAnimationDirect::import(ImportStack& importStack) {
+StatusCode BlendAnimationDirect::import(ImportStack& importStack)
+{
     auto stateMachineImporter = importStack.latest<StateMachineImporter>(StateMachine::typeKey);
-    if (stateMachineImporter == nullptr) {
+    if (stateMachineImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
 
     // Make sure the inputId doesn't overflow the input buffer.
-    if ((size_t)inputId() >= stateMachineImporter->stateMachine()->inputCount()) {
+    if ((size_t)inputId() >= stateMachineImporter->stateMachine()->inputCount())
+    {
         return StatusCode::InvalidObject;
     }
     auto input = stateMachineImporter->stateMachine()->input((size_t)inputId());
-    if (input == nullptr || !input->is<StateMachineNumber>()) {
+    if (input == nullptr || !input->is<StateMachineNumber>())
+    {
         return StatusCode::InvalidObject;
     }
     return Super::import(importStack);
diff --git a/src/animation/blend_state.cpp b/src/animation/blend_state.cpp
index 321926b..c521d7b 100644
--- a/src/animation/blend_state.cpp
+++ b/src/animation/blend_state.cpp
@@ -3,13 +3,16 @@
 
 using namespace rive;
 
-BlendState::~BlendState() {
-    for (auto anim : m_Animations) {
+BlendState::~BlendState()
+{
+    for (auto anim : m_Animations)
+    {
         delete anim;
     }
 }
 
-void BlendState::addAnimation(BlendAnimation* animation) {
+void BlendState::addAnimation(BlendAnimation* animation)
+{
     // Assert it's not already contained.
     assert(std::find(m_Animations.begin(), m_Animations.end(), animation) == m_Animations.end());
     m_Animations.push_back(animation);
diff --git a/src/animation/blend_state_1d.cpp b/src/animation/blend_state_1d.cpp
index 0273fcb..b77422d 100644
--- a/src/animation/blend_state_1d.cpp
+++ b/src/animation/blend_state_1d.cpp
@@ -6,23 +6,29 @@
 
 using namespace rive;
 
-std::unique_ptr<StateInstance> BlendState1D::makeInstance(ArtboardInstance* instance) const {
+std::unique_ptr<StateInstance> BlendState1D::makeInstance(ArtboardInstance* instance) const
+{
     return std::make_unique<BlendState1DInstance>(this, instance);
 }
 
-StatusCode BlendState1D::import(ImportStack& importStack) {
+StatusCode BlendState1D::import(ImportStack& importStack)
+{
     auto stateMachineImporter = importStack.latest<StateMachineImporter>(StateMachine::typeKey);
-    if (stateMachineImporter == nullptr) {
+    if (stateMachineImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
 
-    if (hasValidInputId()) {
+    if (hasValidInputId())
+    {
         // Make sure the inputId doesn't overflow the input buffer.
-        if ((size_t)inputId() >= stateMachineImporter->stateMachine()->inputCount()) {
+        if ((size_t)inputId() >= stateMachineImporter->stateMachine()->inputCount())
+        {
             return StatusCode::InvalidObject;
         }
         auto input = stateMachineImporter->stateMachine()->input((size_t)inputId());
-        if (input == nullptr || !input->is<StateMachineNumber>()) {
+        if (input == nullptr || !input->is<StateMachineNumber>())
+        {
             return StatusCode::InvalidObject;
         }
     }
diff --git a/src/animation/blend_state_1d_instance.cpp b/src/animation/blend_state_1d_instance.cpp
index 5f3e035..235aa51 100644
--- a/src/animation/blend_state_1d_instance.cpp
+++ b/src/animation/blend_state_1d_instance.cpp
@@ -5,23 +5,31 @@
 
 BlendState1DInstance::BlendState1DInstance(const BlendState1D* blendState,
                                            ArtboardInstance* instance) :
-    BlendStateInstance<BlendState1D, BlendAnimation1D>(blendState, instance) {}
+    BlendStateInstance<BlendState1D, BlendAnimation1D>(blendState, instance)
+{}
 
-int BlendState1DInstance::animationIndex(float value) {
+int BlendState1DInstance::animationIndex(float value)
+{
     int idx = 0;
     int mid = 0;
     float closestValue = 0;
     int start = 0;
     int end = static_cast<int>(m_AnimationInstances.size()) - 1;
 
-    while (start <= end) {
+    while (start <= end)
+    {
         mid = (start + end) >> 1;
         closestValue = m_AnimationInstances[mid].blendAnimation()->value();
-        if (closestValue < value) {
+        if (closestValue < value)
+        {
             start = mid + 1;
-        } else if (closestValue > value) {
+        }
+        else if (closestValue > value)
+        {
             end = mid - 1;
-        } else {
+        }
+        else
+        {
             idx = start = mid;
             break;
         }
@@ -31,12 +39,14 @@
     return idx;
 }
 
-void BlendState1DInstance::advance(float seconds, Span<SMIInput*> inputs) {
+void BlendState1DInstance::advance(float seconds, Span<SMIInput*> inputs)
+{
     BlendStateInstance<BlendState1D, BlendAnimation1D>::advance(seconds, inputs);
 
     auto blendState = state()->as<BlendState1D>();
     float value = 0.0f;
-    if (blendState->hasValidInputId()) {
+    if (blendState->hasValidInputId())
+    {
         // TODO: https://github.com/rive-app/rive-cpp/issues/229
         auto inputInstance = inputs[blendState->inputId()];
         auto numberInput = reinterpret_cast<const SMINumber*>(inputInstance);
@@ -52,20 +62,29 @@
     auto toValue = m_To == nullptr ? 0.0f : m_To->blendAnimation()->value();
     auto fromValue = m_From == nullptr ? 0.0f : m_From->blendAnimation()->value();
 
-    if (m_To == nullptr || m_From == nullptr || toValue == fromValue) {
+    if (m_To == nullptr || m_From == nullptr || toValue == fromValue)
+    {
         mix = mixFrom = 1.0f;
-    } else {
+    }
+    else
+    {
         mix = (value - fromValue) / (toValue - fromValue);
         mixFrom = 1.0f - mix;
     }
 
-    for (auto& animation : m_AnimationInstances) {
+    for (auto& animation : m_AnimationInstances)
+    {
         auto animationValue = animation.blendAnimation()->value();
-        if (m_To != nullptr && animationValue == toValue) {
+        if (m_To != nullptr && animationValue == toValue)
+        {
             animation.mix(mix);
-        } else if (m_From != nullptr && animationValue == fromValue) {
+        }
+        else if (m_From != nullptr && animationValue == fromValue)
+        {
             animation.mix(mixFrom);
-        } else {
+        }
+        else
+        {
             animation.mix(0.0f);
         }
     }
diff --git a/src/animation/blend_state_direct.cpp b/src/animation/blend_state_direct.cpp
index b90ff03..92e96d4 100644
--- a/src/animation/blend_state_direct.cpp
+++ b/src/animation/blend_state_direct.cpp
@@ -6,6 +6,7 @@
 
 using namespace rive;
 
-std::unique_ptr<StateInstance> BlendStateDirect::makeInstance(ArtboardInstance* instance) const {
+std::unique_ptr<StateInstance> BlendStateDirect::makeInstance(ArtboardInstance* instance) const
+{
     return std::make_unique<BlendStateDirectInstance>(this, instance);
 }
\ No newline at end of file
diff --git a/src/animation/blend_state_direct_instance.cpp b/src/animation/blend_state_direct_instance.cpp
index 409fd50..5323544 100644
--- a/src/animation/blend_state_direct_instance.cpp
+++ b/src/animation/blend_state_direct_instance.cpp
@@ -5,11 +5,14 @@
 
 BlendStateDirectInstance::BlendStateDirectInstance(const BlendStateDirect* blendState,
                                                    ArtboardInstance* instance) :
-    BlendStateInstance<BlendStateDirect, BlendAnimationDirect>(blendState, instance) {}
+    BlendStateInstance<BlendStateDirect, BlendAnimationDirect>(blendState, instance)
+{}
 
-void BlendStateDirectInstance::advance(float seconds, Span<SMIInput*> inputs) {
+void BlendStateDirectInstance::advance(float seconds, Span<SMIInput*> inputs)
+{
     BlendStateInstance<BlendStateDirect, BlendAnimationDirect>::advance(seconds, inputs);
-    for (auto& animation : m_AnimationInstances) {
+    for (auto& animation : m_AnimationInstances)
+    {
         auto inputInstance = inputs[animation.blendAnimation()->inputId()];
 
         auto numberInput = reinterpret_cast<const SMINumber*>(inputInstance);
diff --git a/src/animation/blend_state_transition.cpp b/src/animation/blend_state_transition.cpp
index 793cc84..3a44be3 100644
--- a/src/animation/blend_state_transition.cpp
+++ b/src/animation/blend_state_transition.cpp
@@ -9,9 +9,12 @@
 using namespace rive;
 
 const LinearAnimationInstance*
-BlendStateTransition::exitTimeAnimationInstance(const StateInstance* from) const {
-    if (from != nullptr) {
-        switch (from->state()->coreType()) {
+BlendStateTransition::exitTimeAnimationInstance(const StateInstance* from) const
+{
+    if (from != nullptr)
+    {
+        switch (from->state()->coreType())
+        {
             case BlendState1D::typeKey:
 
                 return static_cast<const BlendState1DInstance*>(from)->animationInstance(
@@ -27,8 +30,10 @@
     return nullptr;
 }
 
-const LinearAnimation* BlendStateTransition::exitTimeAnimation(const LayerState* from) const {
-    if (m_ExitBlendAnimation != nullptr) {
+const LinearAnimation* BlendStateTransition::exitTimeAnimation(const LayerState* from) const
+{
+    if (m_ExitBlendAnimation != nullptr)
+    {
         return m_ExitBlendAnimation->animation();
     }
     return nullptr;
diff --git a/src/animation/cubic_interpolator.cpp b/src/animation/cubic_interpolator.cpp
index 47fa860..ed655c8 100644
--- a/src/animation/cubic_interpolator.cpp
+++ b/src/animation/cubic_interpolator.cpp
@@ -12,31 +12,37 @@
 const int SubdivisionMaxIterations = 10;
 
 // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
-static float calcBezier(float aT, float aA1, float aA2) {
+static float calcBezier(float aT, float aA1, float aA2)
+{
     return (((1.0f - 3.0f * aA2 + 3.0f * aA1) * aT + (3.0f * aA2 - 6.0f * aA1)) * aT +
             (3.0f * aA1)) *
            aT;
 }
 
 // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
-static float getSlope(float aT, float aA1, float aA2) {
+static float getSlope(float aT, float aA1, float aA2)
+{
     return 3.0f * (1.0f - 3.0f * aA2 + 3.0f * aA1) * aT * aT +
            2.0f * (3.0f * aA2 - 6.0f * aA1) * aT + (3.0f * aA1);
 }
 
-StatusCode CubicInterpolator::onAddedDirty(CoreContext* context) {
-    for (int i = 0; i < SplineTableSize; ++i) {
+StatusCode CubicInterpolator::onAddedDirty(CoreContext* context)
+{
+    for (int i = 0; i < SplineTableSize; ++i)
+    {
         m_Values[i] = calcBezier(i * SampleStepSize, x1(), x2());
     }
     return StatusCode::Ok;
 }
 
-float CubicInterpolator::getT(float x) const {
+float CubicInterpolator::getT(float x) const
+{
     float intervalStart = 0.0f;
     int currentSample = 1;
     int lastSample = SplineTableSize - 1;
 
-    for (; currentSample != lastSample && m_Values[currentSample] <= x; ++currentSample) {
+    for (; currentSample != lastSample && m_Values[currentSample] <= x; ++currentSample)
+    {
         intervalStart += SampleStepSize;
     }
     --currentSample;
@@ -49,28 +55,39 @@
     float _x1 = x1(), _x2 = x2();
 
     float initialSlope = getSlope(guessForT, _x1, _x2);
-    if (initialSlope >= NewtonMinSlope) {
-        for (int i = 0; i < NewtonIterations; ++i) {
+    if (initialSlope >= NewtonMinSlope)
+    {
+        for (int i = 0; i < NewtonIterations; ++i)
+        {
             float currentSlope = getSlope(guessForT, _x1, _x2);
-            if (currentSlope == 0.0f) {
+            if (currentSlope == 0.0f)
+            {
                 return guessForT;
             }
             float currentX = calcBezier(guessForT, _x1, _x2) - x;
             guessForT -= currentX / currentSlope;
         }
         return guessForT;
-    } else if (initialSlope == 0.0f) {
+    }
+    else if (initialSlope == 0.0f)
+    {
         return guessForT;
-    } else {
+    }
+    else
+    {
         float aB = intervalStart + SampleStepSize;
         float currentX, currentT;
         int i = 0;
-        do {
+        do
+        {
             currentT = intervalStart + (aB - intervalStart) / 2.0f;
             currentX = calcBezier(currentT, _x1, _x2) - x;
-            if (currentX > 0.0f) {
+            if (currentX > 0.0f)
+            {
                 aB = currentT;
-            } else {
+            }
+            else
+            {
                 intervalStart = currentT;
             }
         } while (std::abs(currentX) > SubdivisionPrecision && ++i < SubdivisionMaxIterations);
@@ -80,9 +97,11 @@
 
 float CubicInterpolator::transform(float mix) const { return calcBezier(getT(mix), y1(), y2()); }
 
-StatusCode CubicInterpolator::import(ImportStack& importStack) {
+StatusCode CubicInterpolator::import(ImportStack& importStack)
+{
     auto artboardImporter = importStack.latest<ArtboardImporter>(ArtboardBase::typeKey);
-    if (artboardImporter == nullptr) {
+    if (artboardImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     artboardImporter->addComponent(this);
diff --git a/src/animation/keyed_object.cpp b/src/animation/keyed_object.cpp
index 7f04749..6866579 100644
--- a/src/animation/keyed_object.cpp
+++ b/src/animation/keyed_object.cpp
@@ -9,45 +9,57 @@
 KeyedObject::KeyedObject() {}
 KeyedObject::~KeyedObject() {}
 
-void KeyedObject::addKeyedProperty(std::unique_ptr<KeyedProperty> property) {
+void KeyedObject::addKeyedProperty(std::unique_ptr<KeyedProperty> property)
+{
     m_KeyedProperties.push_back(std::move(property));
 }
 
-StatusCode KeyedObject::onAddedDirty(CoreContext* context) {
+StatusCode KeyedObject::onAddedDirty(CoreContext* context)
+{
     // Make sure we're keying a valid object.
-    if (context->resolve(objectId()) == nullptr) {
+    if (context->resolve(objectId()) == nullptr)
+    {
         return StatusCode::MissingObject;
     }
 
-    for (auto& property : m_KeyedProperties) {
+    for (auto& property : m_KeyedProperties)
+    {
         StatusCode code;
-        if ((code = property->onAddedDirty(context)) != StatusCode::Ok) {
+        if ((code = property->onAddedDirty(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode KeyedObject::onAddedClean(CoreContext* context) {
-    for (auto& property : m_KeyedProperties) {
+StatusCode KeyedObject::onAddedClean(CoreContext* context)
+{
+    for (auto& property : m_KeyedProperties)
+    {
         property->onAddedClean(context);
     }
     return StatusCode::Ok;
 }
 
-void KeyedObject::apply(Artboard* artboard, float time, float mix) {
+void KeyedObject::apply(Artboard* artboard, float time, float mix)
+{
     Core* object = artboard->resolve(objectId());
-    if (object == nullptr) {
+    if (object == nullptr)
+    {
         return;
     }
-    for (auto& property : m_KeyedProperties) {
+    for (auto& property : m_KeyedProperties)
+    {
         property->apply(object, time, mix);
     }
 }
 
-StatusCode KeyedObject::import(ImportStack& importStack) {
+StatusCode KeyedObject::import(ImportStack& importStack)
+{
     auto importer = importStack.latest<LinearAnimationImporter>(LinearAnimationBase::typeKey);
-    if (importer == nullptr) {
+    if (importer == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     // we transfer ownership of ourself to the importer!
diff --git a/src/animation/keyed_property.cpp b/src/animation/keyed_property.cpp
index d952451..8aa58d5 100644
--- a/src/animation/keyed_property.cpp
+++ b/src/animation/keyed_property.cpp
@@ -9,11 +9,13 @@
 KeyedProperty::KeyedProperty() {}
 KeyedProperty::~KeyedProperty() {}
 
-void KeyedProperty::addKeyFrame(std::unique_ptr<KeyFrame> keyframe) {
+void KeyedProperty::addKeyFrame(std::unique_ptr<KeyFrame> keyframe)
+{
     m_KeyFrames.push_back(std::move(keyframe));
 }
 
-void KeyedProperty::apply(Core* object, float seconds, float mix) {
+void KeyedProperty::apply(Core* object, float seconds, float mix)
+{
     assert(!m_KeyFrames.empty());
 
     int idx = 0;
@@ -22,14 +24,20 @@
     int start = 0;
     auto numKeyFrames = static_cast<int>(m_KeyFrames.size());
     int end = numKeyFrames - 1;
-    while (start <= end) {
+    while (start <= end)
+    {
         mid = (start + end) >> 1;
         closestSeconds = m_KeyFrames[mid]->seconds();
-        if (closestSeconds < seconds) {
+        if (closestSeconds < seconds)
+        {
             start = mid + 1;
-        } else if (closestSeconds > seconds) {
+        }
+        else if (closestSeconds > seconds)
+        {
             end = mid - 1;
-        } else {
+        }
+        else
+        {
             idx = start = mid;
             break;
         }
@@ -37,50 +45,70 @@
     }
     int pk = propertyKey();
 
-    if (idx == 0) {
+    if (idx == 0)
+    {
         m_KeyFrames[0]->apply(object, pk, mix);
-    } else {
-        if (idx < numKeyFrames) {
+    }
+    else
+    {
+        if (idx < numKeyFrames)
+        {
             KeyFrame* fromFrame = m_KeyFrames[idx - 1].get();
             KeyFrame* toFrame = m_KeyFrames[idx].get();
-            if (seconds == toFrame->seconds()) {
+            if (seconds == toFrame->seconds())
+            {
                 toFrame->apply(object, pk, mix);
-            } else {
-                if (fromFrame->interpolationType() == 0) {
+            }
+            else
+            {
+                if (fromFrame->interpolationType() == 0)
+                {
                     fromFrame->apply(object, pk, mix);
-                } else {
+                }
+                else
+                {
                     fromFrame->applyInterpolation(object, pk, seconds, toFrame, mix);
                 }
             }
-        } else {
+        }
+        else
+        {
             m_KeyFrames[idx - 1]->apply(object, pk, mix);
         }
     }
 }
 
-StatusCode KeyedProperty::onAddedDirty(CoreContext* context) {
+StatusCode KeyedProperty::onAddedDirty(CoreContext* context)
+{
     StatusCode code;
-    for (auto& keyframe : m_KeyFrames) {
-        if ((code = keyframe->onAddedDirty(context)) != StatusCode::Ok) {
+    for (auto& keyframe : m_KeyFrames)
+    {
+        if ((code = keyframe->onAddedDirty(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode KeyedProperty::onAddedClean(CoreContext* context) {
+StatusCode KeyedProperty::onAddedClean(CoreContext* context)
+{
     StatusCode code;
-    for (auto& keyframe : m_KeyFrames) {
-        if ((code = keyframe->onAddedClean(context)) != StatusCode::Ok) {
+    for (auto& keyframe : m_KeyFrames)
+    {
+        if ((code = keyframe->onAddedClean(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode KeyedProperty::import(ImportStack& importStack) {
+StatusCode KeyedProperty::import(ImportStack& importStack)
+{
     auto importer = importStack.latest<KeyedObjectImporter>(KeyedObjectBase::typeKey);
-    if (importer == nullptr) {
+    if (importer == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     importer->addKeyedProperty(std::unique_ptr<KeyedProperty>(this));
diff --git a/src/animation/keyframe.cpp b/src/animation/keyframe.cpp
index c0eaf9a..671beb8 100644
--- a/src/animation/keyframe.cpp
+++ b/src/animation/keyframe.cpp
@@ -7,10 +7,13 @@
 
 using namespace rive;
 
-StatusCode KeyFrame::onAddedDirty(CoreContext* context) {
-    if (interpolatorId() != -1) {
+StatusCode KeyFrame::onAddedDirty(CoreContext* context)
+{
+    if (interpolatorId() != -1)
+    {
         auto coreObject = context->resolve(interpolatorId());
-        if (coreObject == nullptr || !coreObject->is<CubicInterpolator>()) {
+        if (coreObject == nullptr || !coreObject->is<CubicInterpolator>())
+        {
             return StatusCode::MissingObject;
         }
         m_Interpolator = coreObject->as<CubicInterpolator>();
@@ -21,9 +24,11 @@
 
 void KeyFrame::computeSeconds(int fps) { m_Seconds = frame() / (float)fps; }
 
-StatusCode KeyFrame::import(ImportStack& importStack) {
+StatusCode KeyFrame::import(ImportStack& importStack)
+{
     auto importer = importStack.latest<KeyedPropertyImporter>(KeyedProperty::typeKey);
-    if (importer == nullptr) {
+    if (importer == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     importer->addKeyFrame(std::unique_ptr<KeyFrame>(this));
diff --git a/src/animation/keyframe_bool.cpp b/src/animation/keyframe_bool.cpp
index a7eba61..401a655 100644
--- a/src/animation/keyframe_bool.cpp
+++ b/src/animation/keyframe_bool.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-void KeyFrameBool::apply(Core* object, int propertyKey, float mix) {
+void KeyFrameBool::apply(Core* object, int propertyKey, float mix)
+{
     CoreRegistry::setBool(object, propertyKey, value());
 }
 
@@ -11,6 +12,7 @@
                                       int propertyKey,
                                       float currentTime,
                                       const KeyFrame* nextFrame,
-                                      float mix) {
+                                      float mix)
+{
     CoreRegistry::setBool(object, propertyKey, value());
 }
\ No newline at end of file
diff --git a/src/animation/keyframe_color.cpp b/src/animation/keyframe_color.cpp
index a8feea2..b9788c9 100644
--- a/src/animation/keyframe_color.cpp
+++ b/src/animation/keyframe_color.cpp
@@ -4,16 +4,21 @@
 
 using namespace rive;
 
-static void applyColor(Core* object, int propertyKey, float mix, int value) {
-    if (mix == 1.0f) {
+static void applyColor(Core* object, int propertyKey, float mix, int value)
+{
+    if (mix == 1.0f)
+    {
         CoreRegistry::setColor(object, propertyKey, value);
-    } else {
+    }
+    else
+    {
         auto mixedColor = colorLerp(CoreRegistry::getColor(object, propertyKey), value, mix);
         CoreRegistry::setColor(object, propertyKey, mixedColor);
     }
 }
 
-void KeyFrameColor::apply(Core* object, int propertyKey, float mix) {
+void KeyFrameColor::apply(Core* object, int propertyKey, float mix)
+{
     applyColor(object, propertyKey, mix, value());
 }
 
@@ -21,12 +26,14 @@
                                        int propertyKey,
                                        float currentTime,
                                        const KeyFrame* nextFrame,
-                                       float mix) {
+                                       float mix)
+{
     auto kfc = nextFrame->as<KeyFrameColor>();
     const KeyFrameColor& nextColor = *kfc;
     float f = (currentTime - seconds()) / (nextColor.seconds() - seconds());
 
-    if (CubicInterpolator* cubic = interpolator()) {
+    if (CubicInterpolator* cubic = interpolator())
+    {
         f = cubic->transform(f);
     }
 
diff --git a/src/animation/keyframe_double.cpp b/src/animation/keyframe_double.cpp
index efefdc2..d6f63c2 100644
--- a/src/animation/keyframe_double.cpp
+++ b/src/animation/keyframe_double.cpp
@@ -8,10 +8,14 @@
 // floating point numbers suffice. So even though this is a "double keyframe" to
 // match editor names, the actual values are stored and applied in 32 bits.
 
-static void applyDouble(Core* object, int propertyKey, float mix, float value) {
-    if (mix == 1.0f) {
+static void applyDouble(Core* object, int propertyKey, float mix, float value)
+{
+    if (mix == 1.0f)
+    {
         CoreRegistry::setDouble(object, propertyKey, value);
-    } else {
+    }
+    else
+    {
         float mixi = 1.0f - mix;
         CoreRegistry::setDouble(object,
                                 propertyKey,
@@ -19,7 +23,8 @@
     }
 }
 
-void KeyFrameDouble::apply(Core* object, int propertyKey, float mix) {
+void KeyFrameDouble::apply(Core* object, int propertyKey, float mix)
+{
     applyDouble(object, propertyKey, mix, value());
 }
 
@@ -27,12 +32,14 @@
                                         int propertyKey,
                                         float currentTime,
                                         const KeyFrame* nextFrame,
-                                        float mix) {
+                                        float mix)
+{
     auto kfd = nextFrame->as<KeyFrameDouble>();
     const KeyFrameDouble& nextDouble = *kfd;
     float f = (currentTime - seconds()) / (nextDouble.seconds() - seconds());
 
-    if (CubicInterpolator* cubic = interpolator()) {
+    if (CubicInterpolator* cubic = interpolator())
+    {
         f = cubic->transform(f);
     }
 
diff --git a/src/animation/keyframe_id.cpp b/src/animation/keyframe_id.cpp
index 00be39a..dfa8fcc 100644
--- a/src/animation/keyframe_id.cpp
+++ b/src/animation/keyframe_id.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-void KeyFrameId::apply(Core* object, int propertyKey, float mix) {
+void KeyFrameId::apply(Core* object, int propertyKey, float mix)
+{
     CoreRegistry::setUint(object, propertyKey, value());
 }
 
@@ -11,6 +12,7 @@
                                     int propertyKey,
                                     float currentTime,
                                     const KeyFrame* nextFrame,
-                                    float mix) {
+                                    float mix)
+{
     CoreRegistry::setUint(object, propertyKey, value());
 }
\ No newline at end of file
diff --git a/src/animation/layer_state.cpp b/src/animation/layer_state.cpp
index 45c0e8c..ffce4ab 100644
--- a/src/animation/layer_state.cpp
+++ b/src/animation/layer_state.cpp
@@ -8,36 +8,46 @@
 
 using namespace rive;
 
-LayerState::~LayerState() {
-    for (auto transition : m_Transitions) {
+LayerState::~LayerState()
+{
+    for (auto transition : m_Transitions)
+    {
         delete transition;
     }
 }
 
-StatusCode LayerState::onAddedDirty(CoreContext* context) {
+StatusCode LayerState::onAddedDirty(CoreContext* context)
+{
     StatusCode code;
-    for (auto transition : m_Transitions) {
-        if ((code = transition->onAddedDirty(context)) != StatusCode::Ok) {
+    for (auto transition : m_Transitions)
+    {
+        if ((code = transition->onAddedDirty(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode LayerState::onAddedClean(CoreContext* context) {
+StatusCode LayerState::onAddedClean(CoreContext* context)
+{
     StatusCode code;
-    for (auto transition : m_Transitions) {
-        if ((code = transition->onAddedClean(context)) != StatusCode::Ok) {
+    for (auto transition : m_Transitions)
+    {
+        if ((code = transition->onAddedClean(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode LayerState::import(ImportStack& importStack) {
+StatusCode LayerState::import(ImportStack& importStack)
+{
     auto layerImporter =
         importStack.latest<StateMachineLayerImporter>(StateMachineLayerBase::typeKey);
-    if (layerImporter == nullptr) {
+    if (layerImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     layerImporter->addState(this);
@@ -46,6 +56,7 @@
 
 void LayerState::addTransition(StateTransition* transition) { m_Transitions.push_back(transition); }
 
-std::unique_ptr<StateInstance> LayerState::makeInstance(ArtboardInstance* instance) const {
+std::unique_ptr<StateInstance> LayerState::makeInstance(ArtboardInstance* instance) const
+{
     return std::make_unique<SystemStateInstance>(this, instance);
 }
\ No newline at end of file
diff --git a/src/animation/linear_animation.cpp b/src/animation/linear_animation.cpp
index b308664..f643c7a 100644
--- a/src/animation/linear_animation.cpp
+++ b/src/animation/linear_animation.cpp
@@ -12,62 +12,79 @@
 
 LinearAnimation::LinearAnimation() {}
 
-LinearAnimation::~LinearAnimation() {
+LinearAnimation::~LinearAnimation()
+{
 #ifdef TESTING
     deleteCount++;
 #endif
 }
 
-StatusCode LinearAnimation::onAddedDirty(CoreContext* context) {
+StatusCode LinearAnimation::onAddedDirty(CoreContext* context)
+{
     StatusCode code;
-    for (const auto& object : m_KeyedObjects) {
-        if ((code = object->onAddedDirty(context)) != StatusCode::Ok) {
+    for (const auto& object : m_KeyedObjects)
+    {
+        if ((code = object->onAddedDirty(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode LinearAnimation::onAddedClean(CoreContext* context) {
+StatusCode LinearAnimation::onAddedClean(CoreContext* context)
+{
     StatusCode code;
-    for (const auto& object : m_KeyedObjects) {
-        if ((code = object->onAddedClean(context)) != StatusCode::Ok) {
+    for (const auto& object : m_KeyedObjects)
+    {
+        if ((code = object->onAddedClean(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-void LinearAnimation::addKeyedObject(std::unique_ptr<KeyedObject> object) {
+void LinearAnimation::addKeyedObject(std::unique_ptr<KeyedObject> object)
+{
     m_KeyedObjects.push_back(std::move(object));
 }
 
-void LinearAnimation::apply(Artboard* artboard, float time, float mix) const {
-    for (const auto& object : m_KeyedObjects) {
+void LinearAnimation::apply(Artboard* artboard, float time, float mix) const
+{
+    for (const auto& object : m_KeyedObjects)
+    {
         object->apply(artboard, time, mix);
     }
 }
 
-StatusCode LinearAnimation::import(ImportStack& importStack) {
+StatusCode LinearAnimation::import(ImportStack& importStack)
+{
     auto artboardImporter = importStack.latest<ArtboardImporter>(ArtboardBase::typeKey);
-    if (artboardImporter == nullptr) {
+    if (artboardImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     artboardImporter->addAnimation(this);
     return Super::import(importStack);
 }
 
-float LinearAnimation::startSeconds() const {
+float LinearAnimation::startSeconds() const
+{
     return (enableWorkArea() ? workStart() : 0) / (float)fps();
 }
-float LinearAnimation::endSeconds() const {
+float LinearAnimation::endSeconds() const
+{
     return (enableWorkArea() ? workEnd() : duration()) / (float)fps();
 }
 float LinearAnimation::durationSeconds() const { return endSeconds() - startSeconds(); }
 
-float LinearAnimation::globalToLocalSeconds(float seconds) const {
-    switch (loop()) {
-        case Loop::oneShot: return seconds + startSeconds();
+float LinearAnimation::globalToLocalSeconds(float seconds) const
+{
+    switch (loop())
+    {
+        case Loop::oneShot:
+            return seconds + startSeconds();
         case Loop::loop:
             return std::fmod(seconds, (endSeconds() - startSeconds())) + startSeconds();
         case Loop::pingPong:
diff --git a/src/animation/linear_animation_instance.cpp b/src/animation/linear_animation_instance.cpp
index 51b0caf..3a7b1c5 100644
--- a/src/animation/linear_animation_instance.cpp
+++ b/src/animation/linear_animation_instance.cpp
@@ -14,7 +14,8 @@
     m_TotalTime(0.0f),
     m_LastTotalTime(0.0f),
     m_SpilledTime(0.0f),
-    m_Direction(1) {
+    m_Direction(1)
+{
     Counter::update(Counter::kLinearAnimationInstance, +1);
 }
 
@@ -27,22 +28,26 @@
     m_SpilledTime(lhs.m_SpilledTime),
     m_Direction(lhs.m_Direction),
     m_DidLoop(lhs.m_DidLoop),
-    m_LoopValue(lhs.m_LoopValue) {
+    m_LoopValue(lhs.m_LoopValue)
+{
     Counter::update(Counter::kLinearAnimationInstance, +1);
 }
 
-LinearAnimationInstance::~LinearAnimationInstance() {
+LinearAnimationInstance::~LinearAnimationInstance()
+{
     Counter::update(Counter::kLinearAnimationInstance, -1);
 }
 
-bool LinearAnimationInstance::advanceAndApply(float seconds) {
+bool LinearAnimationInstance::advanceAndApply(float seconds)
+{
     bool more = this->advance(seconds);
     this->apply();
     m_ArtboardInstance->advance(seconds);
     return more;
 }
 
-bool LinearAnimationInstance::advance(float elapsedSeconds) {
+bool LinearAnimationInstance::advance(float elapsedSeconds)
+{
     const LinearAnimation& animation = *m_Animation;
     m_Time += elapsedSeconds * animation.speed() * m_Direction;
     m_LastTotalTime = m_TotalTime;
@@ -60,15 +65,19 @@
     bool didLoop = false;
     m_SpilledTime = 0.0f;
 
-    switch (loop()) {
+    switch (loop())
+    {
         case Loop::oneShot:
-            if (m_Direction == 1 && frames > end) {
+            if (m_Direction == 1 && frames > end)
+            {
                 keepGoing = false;
                 m_SpilledTime = (frames - end) / fps;
                 frames = (float)end;
                 m_Time = frames / fps;
                 didLoop = true;
-            } else if (m_Direction == -1 && frames < start) {
+            }
+            else if (m_Direction == -1 && frames < start)
+            {
                 keepGoing = false;
                 m_SpilledTime = (start - frames) / fps;
                 frames = (float)start;
@@ -77,14 +86,17 @@
             }
             break;
         case Loop::loop:
-            if (m_Direction == 1 && frames >= end) {
+            if (m_Direction == 1 && frames >= end)
+            {
                 m_SpilledTime = (frames - end) / fps;
                 frames = m_Time * fps;
                 frames = start + std::fmod(frames - start, (float)range);
 
                 m_Time = frames / fps;
                 didLoop = true;
-            } else if (m_Direction == -1 && frames <= start) {
+            }
+            else if (m_Direction == -1 && frames <= start)
+            {
 
                 m_SpilledTime = (start - frames) / fps;
                 frames = m_Time * fps;
@@ -94,20 +106,26 @@
             }
             break;
         case Loop::pingPong:
-            while (true) {
-                if (m_Direction == 1 && frames >= end) {
+            while (true)
+            {
+                if (m_Direction == 1 && frames >= end)
+                {
                     m_SpilledTime = (frames - end) / fps;
                     m_Direction = -1;
                     frames = end + (end - frames);
                     m_Time = frames / fps;
                     didLoop = true;
-                } else if (m_Direction == -1 && frames < start) {
+                }
+                else if (m_Direction == -1 && frames < start)
+                {
                     m_SpilledTime = (start - frames) / fps;
                     m_Direction = 1;
                     frames = start + (start - frames);
                     m_Time = frames / fps;
                     didLoop = true;
-                } else {
+                }
+                else
+                {
                     // we're within the range, we can stop fixing. We do this in
                     // a loop to fix conditions when time has advanced so far
                     // that we've ping-ponged back and forth a few times in a
@@ -123,8 +141,10 @@
     return keepGoing;
 }
 
-void LinearAnimationInstance::time(float value) {
-    if (m_Time == value) {
+void LinearAnimationInstance::time(float value)
+{
+    if (m_Time == value)
+    {
         return;
     }
     m_Time = value;
@@ -151,24 +171,30 @@
 
 std::string LinearAnimationInstance::name() const { return m_Animation->name(); }
 
-bool LinearAnimationInstance::isTranslucent() const {
+bool LinearAnimationInstance::isTranslucent() const
+{
     return m_ArtboardInstance->isTranslucent(this);
 }
 
 // Returns either the animation's default or overridden loop values
-int LinearAnimationInstance::loopValue() const {
-    if (m_LoopValue != -1) {
+int LinearAnimationInstance::loopValue() const
+{
+    if (m_LoopValue != -1)
+    {
         return m_LoopValue;
     }
     return m_Animation->loopValue();
 }
 
 // Override the animation's loop value
-void LinearAnimationInstance::loopValue(int value) {
-    if (m_LoopValue == value) {
+void LinearAnimationInstance::loopValue(int value)
+{
+    if (m_LoopValue == value)
+    {
         return;
     }
-    if (m_LoopValue == -1 && m_Animation->loopValue() == value) {
+    if (m_LoopValue == -1 && m_Animation->loopValue() == value)
+    {
         return;
     }
     m_LoopValue = value;
diff --git a/src/animation/listener_action.cpp b/src/animation/listener_action.cpp
index cf0dbc3..b67fa2d 100644
--- a/src/animation/listener_action.cpp
+++ b/src/animation/listener_action.cpp
@@ -7,10 +7,12 @@
 
 using namespace rive;
 
-StatusCode ListenerAction::import(ImportStack& importStack) {
+StatusCode ListenerAction::import(ImportStack& importStack)
+{
     auto stateMachineListenerImporter =
         importStack.latest<StateMachineListenerImporter>(StateMachineListenerBase::typeKey);
-    if (stateMachineListenerImporter == nullptr) {
+    if (stateMachineListenerImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
 
diff --git a/src/animation/listener_align_target.cpp b/src/animation/listener_align_target.cpp
index 4317227..c0a573a 100644
--- a/src/animation/listener_align_target.cpp
+++ b/src/animation/listener_align_target.cpp
@@ -5,16 +5,18 @@
 
 using namespace rive;
 
-void ListenerAlignTarget::perform(StateMachineInstance* stateMachineInstance,
-                                  Vec2D position) const {
+void ListenerAlignTarget::perform(StateMachineInstance* stateMachineInstance, Vec2D position) const
+{
     auto coreTarget = stateMachineInstance->artboard()->resolve(targetId());
-    if (coreTarget == nullptr || !coreTarget->is<Node>()) {
+    if (coreTarget == nullptr || !coreTarget->is<Node>())
+    {
         return;
     }
     auto target = coreTarget->as<Node>();
     Mat2D targetParentWorld = getParentWorld(*target);
     Mat2D inverse;
-    if (!targetParentWorld.invert(&inverse)) {
+    if (!targetParentWorld.invert(&inverse))
+    {
         return;
     }
 
diff --git a/src/animation/listener_bool_change.cpp b/src/animation/listener_bool_change.cpp
index 7c2d968..1fd24d8 100644
--- a/src/animation/listener_bool_change.cpp
+++ b/src/animation/listener_bool_change.cpp
@@ -4,23 +4,33 @@
 #include "rive/animation/state_machine_input_instance.hpp"
 using namespace rive;
 
-bool ListenerBoolChange::validateInputType(const StateMachineInput* input) const {
+bool ListenerBoolChange::validateInputType(const StateMachineInput* input) const
+{
     // A null input is valid as the StateMachine can attempt to limp along if we
     // introduce new input types that old conditions are expected to handle in
     // newer runtimes. The older runtimes will just evaluate them to true.
     return input == nullptr || input->is<StateMachineBool>();
 }
 
-void ListenerBoolChange::perform(StateMachineInstance* stateMachineInstance, Vec2D position) const {
+void ListenerBoolChange::perform(StateMachineInstance* stateMachineInstance, Vec2D position) const
+{
     auto inputInstance = stateMachineInstance->input(inputId());
-    if (inputInstance == nullptr) {
+    if (inputInstance == nullptr)
+    {
         return;
     }
     // If it's not null, it must be our correct type (why we validate at load time).
     auto boolInput = reinterpret_cast<SMIBool*>(inputInstance);
-    switch (value()) {
-        case 0: boolInput->value(false); break;
-        case 1: boolInput->value(true); break;
-        default: boolInput->value(!boolInput->value()); break;
+    switch (value())
+    {
+        case 0:
+            boolInput->value(false);
+            break;
+        case 1:
+            boolInput->value(true);
+            break;
+        default:
+            boolInput->value(!boolInput->value());
+            break;
     }
 }
\ No newline at end of file
diff --git a/src/animation/listener_input_change.cpp b/src/animation/listener_input_change.cpp
index 79c0489..c9307a0 100644
--- a/src/animation/listener_input_change.cpp
+++ b/src/animation/listener_input_change.cpp
@@ -7,13 +7,16 @@
 
 using namespace rive;
 
-StatusCode ListenerInputChange::import(ImportStack& importStack) {
+StatusCode ListenerInputChange::import(ImportStack& importStack)
+{
     auto stateMachineImporter = importStack.latest<StateMachineImporter>(StateMachine::typeKey);
-    if (stateMachineImporter == nullptr) {
+    if (stateMachineImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
 
-    if (!validateInputType(stateMachineImporter->stateMachine()->input((size_t)inputId()))) {
+    if (!validateInputType(stateMachineImporter->stateMachine()->input((size_t)inputId())))
+    {
         return StatusCode::InvalidObject;
     }
     return Super::import(importStack);
diff --git a/src/animation/listener_number_change.cpp b/src/animation/listener_number_change.cpp
index 91d9268..22ee975 100644
--- a/src/animation/listener_number_change.cpp
+++ b/src/animation/listener_number_change.cpp
@@ -5,17 +5,19 @@
 
 using namespace rive;
 
-bool ListenerNumberChange::validateInputType(const StateMachineInput* input) const {
+bool ListenerNumberChange::validateInputType(const StateMachineInput* input) const
+{
     // A null input is valid as the StateMachine can attempt to limp along if we
     // introduce new input types that old conditions are expected to handle in
     // newer runtimes. The older runtimes will just evaluate them to true.
     return input == nullptr || input->is<StateMachineNumber>();
 }
 
-void ListenerNumberChange::perform(StateMachineInstance* stateMachineInstance,
-                                   Vec2D position) const {
+void ListenerNumberChange::perform(StateMachineInstance* stateMachineInstance, Vec2D position) const
+{
     auto inputInstance = stateMachineInstance->input(inputId());
-    if (inputInstance == nullptr) {
+    if (inputInstance == nullptr)
+    {
         return;
     }
     // If it's not null, it must be our correct type (why we validate at load time).
diff --git a/src/animation/listener_trigger_change.cpp b/src/animation/listener_trigger_change.cpp
index b601f04..5ad11bf 100644
--- a/src/animation/listener_trigger_change.cpp
+++ b/src/animation/listener_trigger_change.cpp
@@ -5,7 +5,8 @@
 
 using namespace rive;
 
-bool ListenerTriggerChange::validateInputType(const StateMachineInput* input) const {
+bool ListenerTriggerChange::validateInputType(const StateMachineInput* input) const
+{
     // A null input is valid as the StateMachine can attempt to limp along if we
     // introduce new input types that old conditions are expected to handle in
     // newer runtimes. The older runtimes will just evaluate them to true.
@@ -13,9 +14,11 @@
 }
 
 void ListenerTriggerChange::perform(StateMachineInstance* stateMachineInstance,
-                                    Vec2D position) const {
+                                    Vec2D position) const
+{
     auto inputInstance = stateMachineInstance->input(inputId());
-    if (inputInstance == nullptr) {
+    if (inputInstance == nullptr)
+    {
         return;
     }
     // If it's not null, it must be our correct type (why we validate at load time).
diff --git a/src/animation/nested_animation.cpp b/src/animation/nested_animation.cpp
index b1a26f0..7916e88 100644
--- a/src/animation/nested_animation.cpp
+++ b/src/animation/nested_animation.cpp
@@ -4,10 +4,13 @@
 
 using namespace rive;
 
-StatusCode NestedAnimation::onAddedDirty(CoreContext* context) {
+StatusCode NestedAnimation::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code == StatusCode::Ok) {
-        if (!parent()->is<NestedArtboard>()) {
+    if (code == StatusCode::Ok)
+    {
+        if (!parent()->is<NestedArtboard>())
+        {
             return StatusCode::InvalidObject;
         }
         auto nestedArtboard = parent()->as<NestedArtboard>();
diff --git a/src/animation/nested_linear_animation.cpp b/src/animation/nested_linear_animation.cpp
index ddc87db..069d276 100644
--- a/src/animation/nested_linear_animation.cpp
+++ b/src/animation/nested_linear_animation.cpp
@@ -6,7 +6,8 @@
 NestedLinearAnimation::NestedLinearAnimation() {}
 NestedLinearAnimation::~NestedLinearAnimation() {}
 
-void NestedLinearAnimation::initializeAnimation(ArtboardInstance* artboard) {
+void NestedLinearAnimation::initializeAnimation(ArtboardInstance* artboard)
+{
     m_AnimationInstance =
         std::make_unique<LinearAnimationInstance>(artboard->animation(animationId()), artboard);
 }
\ No newline at end of file
diff --git a/src/animation/nested_remap_animation.cpp b/src/animation/nested_remap_animation.cpp
index 2af1522..55d6b24 100644
--- a/src/animation/nested_remap_animation.cpp
+++ b/src/animation/nested_remap_animation.cpp
@@ -3,20 +3,25 @@
 
 using namespace rive;
 
-void NestedRemapAnimation::timeChanged() {
-    if (m_AnimationInstance != nullptr) {
+void NestedRemapAnimation::timeChanged()
+{
+    if (m_AnimationInstance != nullptr)
+    {
         m_AnimationInstance->time(m_AnimationInstance->animation()->globalToLocalSeconds(
             m_AnimationInstance->durationSeconds() * time()));
     }
 }
 
-void NestedRemapAnimation::initializeAnimation(ArtboardInstance* artboard) {
+void NestedRemapAnimation::initializeAnimation(ArtboardInstance* artboard)
+{
     Super::initializeAnimation(artboard);
     timeChanged();
 }
 
-void NestedRemapAnimation::advance(float elapsedSeconds) {
-    if (m_AnimationInstance != nullptr) {
+void NestedRemapAnimation::advance(float elapsedSeconds)
+{
+    if (m_AnimationInstance != nullptr)
+    {
         m_AnimationInstance->apply(mix());
     }
 }
\ No newline at end of file
diff --git a/src/animation/nested_simple_animation.cpp b/src/animation/nested_simple_animation.cpp
index 23e4ee0..50286d8 100644
--- a/src/animation/nested_simple_animation.cpp
+++ b/src/animation/nested_simple_animation.cpp
@@ -3,9 +3,12 @@
 
 using namespace rive;
 
-void NestedSimpleAnimation::advance(float elapsedSeconds) {
-    if (m_AnimationInstance != nullptr) {
-        if (isPlaying()) {
+void NestedSimpleAnimation::advance(float elapsedSeconds)
+{
+    if (m_AnimationInstance != nullptr)
+    {
+        if (isPlaying())
+        {
             m_AnimationInstance->advance(elapsedSeconds * speed());
         }
         m_AnimationInstance->apply(mix());
diff --git a/src/animation/nested_state_machine.cpp b/src/animation/nested_state_machine.cpp
index c453867..8a2d1ca 100644
--- a/src/animation/nested_state_machine.cpp
+++ b/src/animation/nested_state_machine.cpp
@@ -6,34 +6,44 @@
 NestedStateMachine::NestedStateMachine() {}
 NestedStateMachine::~NestedStateMachine() {}
 
-void NestedStateMachine::advance(float elapsedSeconds) {
-    if (m_StateMachineInstance != nullptr) {
+void NestedStateMachine::advance(float elapsedSeconds)
+{
+    if (m_StateMachineInstance != nullptr)
+    {
         m_StateMachineInstance->advance(elapsedSeconds);
     }
 }
 
-void NestedStateMachine::initializeAnimation(ArtboardInstance* artboard) {
+void NestedStateMachine::initializeAnimation(ArtboardInstance* artboard)
+{
     m_StateMachineInstance = artboard->stateMachineAt(animationId());
 }
 
-StateMachineInstance* NestedStateMachine::stateMachineInstance() {
+StateMachineInstance* NestedStateMachine::stateMachineInstance()
+{
     return m_StateMachineInstance.get();
 }
 
-void NestedStateMachine::pointerMove(Vec2D position) {
-    if (m_StateMachineInstance != nullptr) {
+void NestedStateMachine::pointerMove(Vec2D position)
+{
+    if (m_StateMachineInstance != nullptr)
+    {
         m_StateMachineInstance->pointerMove(position);
     }
 }
 
-void NestedStateMachine::pointerDown(Vec2D position) {
-    if (m_StateMachineInstance != nullptr) {
+void NestedStateMachine::pointerDown(Vec2D position)
+{
+    if (m_StateMachineInstance != nullptr)
+    {
         m_StateMachineInstance->pointerDown(position);
     }
 }
 
-void NestedStateMachine::pointerUp(Vec2D position) {
-    if (m_StateMachineInstance != nullptr) {
+void NestedStateMachine::pointerUp(Vec2D position)
+{
+    if (m_StateMachineInstance != nullptr)
+    {
         m_StateMachineInstance->pointerUp(position);
     }
 }
\ No newline at end of file
diff --git a/src/animation/state_machine.cpp b/src/animation/state_machine.cpp
index 3d4a441..0450691 100644
--- a/src/animation/state_machine.cpp
+++ b/src/animation/state_machine.cpp
@@ -11,101 +11,132 @@
 
 StateMachine::~StateMachine() {}
 
-StatusCode StateMachine::onAddedDirty(CoreContext* context) {
+StatusCode StateMachine::onAddedDirty(CoreContext* context)
+{
     StatusCode code;
-    for (auto& object : m_Inputs) {
-        if ((code = object->onAddedDirty(context)) != StatusCode::Ok) {
+    for (auto& object : m_Inputs)
+    {
+        if ((code = object->onAddedDirty(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
-    for (auto& object : m_Layers) {
-        if ((code = object->onAddedDirty(context)) != StatusCode::Ok) {
+    for (auto& object : m_Layers)
+    {
+        if ((code = object->onAddedDirty(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
-    for (auto& object : m_Listeners) {
-        if ((code = object->onAddedDirty(context)) != StatusCode::Ok) {
+    for (auto& object : m_Listeners)
+    {
+        if ((code = object->onAddedDirty(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode StateMachine::onAddedClean(CoreContext* context) {
+StatusCode StateMachine::onAddedClean(CoreContext* context)
+{
     StatusCode code;
-    for (auto& object : m_Inputs) {
-        if ((code = object->onAddedClean(context)) != StatusCode::Ok) {
+    for (auto& object : m_Inputs)
+    {
+        if ((code = object->onAddedClean(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
-    for (auto& object : m_Layers) {
-        if ((code = object->onAddedClean(context)) != StatusCode::Ok) {
+    for (auto& object : m_Layers)
+    {
+        if ((code = object->onAddedClean(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
-    for (auto& object : m_Listeners) {
-        if ((code = object->onAddedClean(context)) != StatusCode::Ok) {
+    for (auto& object : m_Listeners)
+    {
+        if ((code = object->onAddedClean(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode StateMachine::import(ImportStack& importStack) {
+StatusCode StateMachine::import(ImportStack& importStack)
+{
     auto artboardImporter = importStack.latest<ArtboardImporter>(ArtboardBase::typeKey);
-    if (artboardImporter == nullptr) {
+    if (artboardImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     artboardImporter->addStateMachine(this);
     return Super::import(importStack);
 }
 
-void StateMachine::addLayer(std::unique_ptr<StateMachineLayer> layer) {
+void StateMachine::addLayer(std::unique_ptr<StateMachineLayer> layer)
+{
     m_Layers.push_back(std::move(layer));
 }
 
-void StateMachine::addInput(std::unique_ptr<StateMachineInput> input) {
+void StateMachine::addInput(std::unique_ptr<StateMachineInput> input)
+{
     m_Inputs.push_back(std::move(input));
 }
 
-void StateMachine::addListener(std::unique_ptr<StateMachineListener> listener) {
+void StateMachine::addListener(std::unique_ptr<StateMachineListener> listener)
+{
     m_Listeners.push_back(std::move(listener));
 }
 
-const StateMachineInput* StateMachine::input(std::string name) const {
-    for (auto& input : m_Inputs) {
-        if (input->name() == name) {
+const StateMachineInput* StateMachine::input(std::string name) const
+{
+    for (auto& input : m_Inputs)
+    {
+        if (input->name() == name)
+        {
             return input.get();
         }
     }
     return nullptr;
 }
 
-const StateMachineInput* StateMachine::input(size_t index) const {
-    if (index < m_Inputs.size()) {
+const StateMachineInput* StateMachine::input(size_t index) const
+{
+    if (index < m_Inputs.size())
+    {
         return m_Inputs[index].get();
     }
     return nullptr;
 }
 
-const StateMachineLayer* StateMachine::layer(std::string name) const {
-    for (auto& layer : m_Layers) {
-        if (layer->name() == name) {
+const StateMachineLayer* StateMachine::layer(std::string name) const
+{
+    for (auto& layer : m_Layers)
+    {
+        if (layer->name() == name)
+        {
             return layer.get();
         }
     }
     return nullptr;
 }
 
-const StateMachineLayer* StateMachine::layer(size_t index) const {
-    if (index < m_Layers.size()) {
+const StateMachineLayer* StateMachine::layer(size_t index) const
+{
+    if (index < m_Layers.size())
+    {
         return m_Layers[index].get();
     }
     return nullptr;
 }
 
-const StateMachineListener* StateMachine::listener(size_t index) const {
-    if (index < m_Listeners.size()) {
+const StateMachineListener* StateMachine::listener(size_t index) const
+{
+    if (index < m_Listeners.size())
+    {
         return m_Listeners[index].get();
     }
     return nullptr;
diff --git a/src/animation/state_machine_input.cpp b/src/animation/state_machine_input.cpp
index 7d53c9c..981f717 100644
--- a/src/animation/state_machine_input.cpp
+++ b/src/animation/state_machine_input.cpp
@@ -9,9 +9,11 @@
 
 StatusCode StateMachineInput::onAddedClean(CoreContext* context) { return StatusCode::Ok; }
 
-StatusCode StateMachineInput::import(ImportStack& importStack) {
+StatusCode StateMachineInput::import(ImportStack& importStack)
+{
     auto stateMachineImporter = importStack.latest<StateMachineImporter>(StateMachineBase::typeKey);
-    if (stateMachineImporter == nullptr) {
+    if (stateMachineImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     // WOW -- we're handing off ownership of this!
diff --git a/src/animation/state_machine_input_instance.cpp b/src/animation/state_machine_input_instance.cpp
index b188d17..5c2fb33 100644
--- a/src/animation/state_machine_input_instance.cpp
+++ b/src/animation/state_machine_input_instance.cpp
@@ -7,7 +7,8 @@
 using namespace rive;
 
 SMIInput::SMIInput(const StateMachineInput* input, StateMachineInstance* machineInstance) :
-    m_MachineInstance(machineInstance), m_Input(input) {}
+    m_MachineInstance(machineInstance), m_Input(input)
+{}
 
 uint16_t SMIInput::inputCoreType() const { return m_Input->coreType(); }
 
@@ -18,10 +19,13 @@
 // bool
 
 SMIBool::SMIBool(const StateMachineBool* input, StateMachineInstance* machineInstance) :
-    SMIInput(input, machineInstance), m_Value(input->value()) {}
+    SMIInput(input, machineInstance), m_Value(input->value())
+{}
 
-void SMIBool::value(bool newValue) {
-    if (m_Value == newValue) {
+void SMIBool::value(bool newValue)
+{
+    if (m_Value == newValue)
+    {
         return;
     }
     m_Value = newValue;
@@ -30,10 +34,13 @@
 
 // number
 SMINumber::SMINumber(const StateMachineNumber* input, StateMachineInstance* machineInstance) :
-    SMIInput(input, machineInstance), m_Value(input->value()) {}
+    SMIInput(input, machineInstance), m_Value(input->value())
+{}
 
-void SMINumber::value(float newValue) {
-    if (m_Value == newValue) {
+void SMINumber::value(float newValue)
+{
+    if (m_Value == newValue)
+    {
         return;
     }
     m_Value = newValue;
@@ -42,10 +49,13 @@
 
 // trigger
 SMITrigger::SMITrigger(const StateMachineTrigger* input, StateMachineInstance* machineInstance) :
-    SMIInput(input, machineInstance) {}
+    SMIInput(input, machineInstance)
+{}
 
-void SMITrigger::fire() {
-    if (m_Fired) {
+void SMITrigger::fire()
+{
+    if (m_Fired)
+    {
         return;
     }
     m_Fired = true;
diff --git a/src/animation/state_machine_instance.cpp b/src/animation/state_machine_instance.cpp
index 9f6d578..6ae9f34 100644
--- a/src/animation/state_machine_instance.cpp
+++ b/src/animation/state_machine_instance.cpp
@@ -24,8 +24,10 @@
 #include <unordered_map>
 
 using namespace rive;
-namespace rive {
-class StateMachineLayerInstance {
+namespace rive
+{
+class StateMachineLayerInstance
+{
 private:
     static const int maxIterations = 100;
     const StateMachineLayer* m_Layer = nullptr;
@@ -52,13 +54,15 @@
     float m_HoldTime = 0.0f;
 
 public:
-    ~StateMachineLayerInstance() {
+    ~StateMachineLayerInstance()
+    {
         delete m_AnyStateInstance;
         delete m_CurrentState;
         delete m_StateFrom;
     }
 
-    void init(const StateMachineLayer* layer, ArtboardInstance* instance) {
+    void init(const StateMachineLayer* layer, ArtboardInstance* instance)
+    {
         m_ArtboardInstance = instance;
         assert(m_Layer == nullptr);
         m_AnyStateInstance = layer->anyState()->makeInstance(instance).release();
@@ -66,35 +70,44 @@
         changeState(m_Layer->entryState());
     }
 
-    void updateMix(float seconds) {
-        if (m_Transition != nullptr && m_StateFrom != nullptr && m_Transition->duration() != 0) {
+    void updateMix(float seconds)
+    {
+        if (m_Transition != nullptr && m_StateFrom != nullptr && m_Transition->duration() != 0)
+        {
             m_Mix = std::min(
                 1.0f,
                 std::max(0.0f, (m_Mix + seconds / m_Transition->mixTime(m_StateFrom->state()))));
-        } else {
+        }
+        else
+        {
             m_Mix = 1.0f;
         }
     }
 
-    bool advance(/*Artboard* artboard, */ float seconds, Span<SMIInput*> inputs) {
+    bool advance(/*Artboard* artboard, */ float seconds, Span<SMIInput*> inputs)
+    {
         m_StateChangedOnAdvance = false;
 
-        if (m_CurrentState != nullptr) {
+        if (m_CurrentState != nullptr)
+        {
             m_CurrentState->advance(seconds, inputs);
         }
 
         updateMix(seconds);
 
-        if (m_StateFrom != nullptr && m_Mix < 1.0f && !m_HoldAnimationFrom) {
+        if (m_StateFrom != nullptr && m_Mix < 1.0f && !m_HoldAnimationFrom)
+        {
             // This didn't advance during our updateState, but it should now
             // that we realize we need to mix it in.
             m_StateFrom->advance(seconds, inputs);
         }
 
-        for (int i = 0; updateState(inputs, i != 0); i++) {
+        for (int i = 0; updateState(inputs, i != 0); i++)
+        {
             apply();
 
-            if (i == maxIterations) {
+            if (i == maxIterations)
+            {
                 fprintf(stderr, "StateMachine exceeded max iterations.\n");
                 return false;
             }
@@ -106,29 +119,35 @@
                (m_CurrentState != nullptr && m_CurrentState->keepGoing());
     }
 
-    bool isTransitioning() {
+    bool isTransitioning()
+    {
         return m_Transition != nullptr && m_StateFrom != nullptr && m_Transition->duration() != 0 &&
                m_Mix < 1.0f;
     }
 
-    bool updateState(Span<SMIInput*> inputs, bool ignoreTriggers) {
+    bool updateState(Span<SMIInput*> inputs, bool ignoreTriggers)
+    {
         // Don't allow changing state while a transition is taking place
         // (we're mixing one state onto another).
-        if (isTransitioning()) {
+        if (isTransitioning())
+        {
             return false;
         }
 
         m_WaitingForExit = false;
 
-        if (tryChangeState(m_AnyStateInstance, inputs, ignoreTriggers)) {
+        if (tryChangeState(m_AnyStateInstance, inputs, ignoreTriggers))
+        {
             return true;
         }
 
         return tryChangeState(m_CurrentState, inputs, ignoreTriggers);
     }
 
-    bool changeState(const LayerState* stateTo) {
-        if ((m_CurrentState == nullptr ? nullptr : m_CurrentState->state()) == stateTo) {
+    bool changeState(const LayerState* stateTo)
+    {
+        if ((m_CurrentState == nullptr ? nullptr : m_CurrentState->state()) == stateTo)
+        {
             return false;
         }
         m_CurrentState =
@@ -138,20 +157,25 @@
 
     bool tryChangeState(StateInstance* stateFromInstance,
                         Span<SMIInput*> inputs,
-                        bool ignoreTriggers) {
-        if (stateFromInstance == nullptr) {
+                        bool ignoreTriggers)
+    {
+        if (stateFromInstance == nullptr)
+        {
             return false;
         }
         auto stateFrom = stateFromInstance->state();
         auto outState = m_CurrentState;
-        for (size_t i = 0, length = stateFrom->transitionCount(); i < length; i++) {
+        for (size_t i = 0, length = stateFrom->transitionCount(); i < length; i++)
+        {
             auto transition = stateFrom->transition(i);
             auto allowed = transition->allowed(stateFromInstance, inputs, ignoreTriggers);
-            if (allowed == AllowTransition::yes && changeState(transition->stateTo())) {
+            if (allowed == AllowTransition::yes && changeState(transition->stateTo()))
+            {
                 m_StateChangedOnAdvance = true;
                 // state actually has changed
                 m_Transition = transition;
-                if (m_StateFrom != m_AnyStateInstance) {
+                if (m_StateFrom != m_AnyStateInstance)
+                {
                     // Old state from is done.
                     delete m_StateFrom;
                 }
@@ -160,7 +184,8 @@
                 // If we had an exit time and wanted to pause on exit, make
                 // sure to hold the exit time. Delegate this to the
                 // transition by telling it that it was completed.
-                if (outState != nullptr && transition->applyExitCondition(outState)) {
+                if (outState != nullptr && transition->applyExitCondition(outState))
+                {
                     // Make sure we apply this state. This only returns true
                     // when it's an animation state instance.
                     auto instance =
@@ -172,7 +197,8 @@
                 m_MixFrom = m_Mix;
 
                 // Keep mixing last animation that was mixed in.
-                if (m_Mix != 0.0f) {
+                if (m_Mix != 0.0f)
+                {
                     m_HoldAnimationFrom = transition->pauseOnExit();
                 }
                 if (m_StateFrom != nullptr && m_StateFrom->state()->is<AnimationState>() &&
@@ -188,35 +214,44 @@
                 updateMix(0.0f);
                 m_WaitingForExit = false;
                 return true;
-            } else if (allowed == AllowTransition::waitingForExit) {
+            }
+            else if (allowed == AllowTransition::waitingForExit)
+            {
                 m_WaitingForExit = true;
             }
         }
         return false;
     }
 
-    void apply(/*Artboard* artboard*/) {
-        if (m_HoldAnimation != nullptr) {
+    void apply(/*Artboard* artboard*/)
+    {
+        if (m_HoldAnimation != nullptr)
+        {
             m_HoldAnimation->apply(m_ArtboardInstance, m_HoldTime, m_MixFrom);
             m_HoldAnimation = nullptr;
         }
 
-        if (m_StateFrom != nullptr && m_Mix < 1.0f) {
+        if (m_StateFrom != nullptr && m_Mix < 1.0f)
+        {
             m_StateFrom->apply(m_MixFrom);
         }
-        if (m_CurrentState != nullptr) {
+        if (m_CurrentState != nullptr)
+        {
             m_CurrentState->apply(m_Mix);
         }
     }
 
     bool stateChangedOnAdvance() const { return m_StateChangedOnAdvance; }
 
-    const LayerState* currentState() {
+    const LayerState* currentState()
+    {
         return m_CurrentState == nullptr ? nullptr : m_CurrentState->state();
     }
 
-    const LinearAnimationInstance* currentAnimation() const {
-        if (m_CurrentState == nullptr || !m_CurrentState->state()->is<AnimationState>()) {
+    const LinearAnimationInstance* currentAnimation() const
+    {
+        if (m_CurrentState == nullptr || !m_CurrentState->state()->is<AnimationState>())
+        {
             return nullptr;
         }
         return static_cast<AnimationStateInstance*>(m_CurrentState)->animationInstance();
@@ -226,7 +261,8 @@
 /// Representation of a Shape from the Artboard Instance and all the listeners it
 /// triggers. Allows tracking hover and performing hit detection only once on
 /// shapes that trigger multiple listeners.
-class HitShape {
+class HitShape
+{
 private:
     Shape* m_Shape;
 
@@ -238,8 +274,10 @@
 };
 } // namespace rive
 
-void StateMachineInstance::updateListeners(Vec2D position, ListenerType hitType) {
-    if (m_ArtboardInstance->frameOrigin()) {
+void StateMachineInstance::updateListeners(Vec2D position, ListenerType hitType)
+{
+    if (m_ArtboardInstance->frameOrigin())
+    {
         position -= Vec2D(m_ArtboardInstance->originX() * m_ArtboardInstance->width(),
                           m_ArtboardInstance->originY() * m_ArtboardInstance->height());
     }
@@ -251,7 +289,8 @@
                         position.y + hitRadius)
                        .round();
 
-    for (const auto& hitShape : m_HitShapes) {
+    for (const auto& hitShape : m_HitShapes)
+    {
 
         // TODO: quick reject.
 
@@ -261,19 +300,25 @@
         hitShape->isHovered = isOver;
 
         // iterate all listeners associated with this hit shape
-        for (auto listener : hitShape->listeners) {
+        for (auto listener : hitShape->listeners)
+        {
             // Always update hover states regardless of which specific listener type
             // we're trying to trigger.
-            if (hoverChange) {
-                if (isOver && listener->listenerType() == ListenerType::enter) {
+            if (hoverChange)
+            {
+                if (isOver && listener->listenerType() == ListenerType::enter)
+                {
                     listener->performChanges(this, position);
                     markNeedsAdvance();
-                } else if (!isOver && listener->listenerType() == ListenerType::exit) {
+                }
+                else if (!isOver && listener->listenerType() == ListenerType::exit)
+                {
                     listener->performChanges(this, position);
                     markNeedsAdvance();
                 }
             }
-            if (isOver && hitType == listener->listenerType()) {
+            if (isOver && hitType == listener->listenerType())
+            {
                 listener->performChanges(this, position);
                 markNeedsAdvance();
             }
@@ -284,51 +329,70 @@
     // can be sorted by drawOrder so they can be iterated in one loop and early
     // out if any hit stops propagation (also require the ability to mark a hit
     // as able to stop propagation)
-    for (auto nestedArtboard : m_HitNestedArtboards) {
+    for (auto nestedArtboard : m_HitNestedArtboards)
+    {
         Vec2D nestedPosition;
-        if (!nestedArtboard->worldToLocal(position, &nestedPosition)) {
+        if (!nestedArtboard->worldToLocal(position, &nestedPosition))
+        {
             // Mounted artboard isn't ready or has a 0 scale transform.
             continue;
         }
 
-        for (auto nestedAnimation : nestedArtboard->nestedAnimations()) {
-            if (nestedAnimation->is<NestedStateMachine>()) {
+        for (auto nestedAnimation : nestedArtboard->nestedAnimations())
+        {
+            if (nestedAnimation->is<NestedStateMachine>())
+            {
                 auto nestedStateMachine = nestedAnimation->as<NestedStateMachine>();
-                switch (hitType) {
-                    case ListenerType::down: nestedStateMachine->pointerDown(nestedPosition); break;
-                    case ListenerType::up: nestedStateMachine->pointerUp(nestedPosition); break;
-                    case ListenerType::move: nestedStateMachine->pointerMove(nestedPosition); break;
+                switch (hitType)
+                {
+                    case ListenerType::down:
+                        nestedStateMachine->pointerDown(nestedPosition);
+                        break;
+                    case ListenerType::up:
+                        nestedStateMachine->pointerUp(nestedPosition);
+                        break;
+                    case ListenerType::move:
+                        nestedStateMachine->pointerMove(nestedPosition);
+                        break;
                     case ListenerType::enter:
-                    case ListenerType::exit: break;
+                    case ListenerType::exit:
+                        break;
                 }
             }
         }
     }
 }
 
-void StateMachineInstance::pointerMove(Vec2D position) {
+void StateMachineInstance::pointerMove(Vec2D position)
+{
     updateListeners(position, ListenerType::move);
 }
-void StateMachineInstance::pointerDown(Vec2D position) {
+void StateMachineInstance::pointerDown(Vec2D position)
+{
     updateListeners(position, ListenerType::down);
 }
-void StateMachineInstance::pointerUp(Vec2D position) {
+void StateMachineInstance::pointerUp(Vec2D position)
+{
     updateListeners(position, ListenerType::up);
 }
 
 StateMachineInstance::StateMachineInstance(const StateMachine* machine,
                                            ArtboardInstance* instance) :
-    Scene(instance), m_Machine(machine) {
+    Scene(instance), m_Machine(machine)
+{
     Counter::update(Counter::kStateMachineInstance, +1);
 
     const auto count = machine->inputCount();
     m_InputInstances.resize(count);
-    for (size_t i = 0; i < count; i++) {
+    for (size_t i = 0; i < count; i++)
+    {
         auto input = machine->input(i);
-        if (input == nullptr) {
+        if (input == nullptr)
+        {
             continue;
         }
-        switch (input->coreType()) {
+        switch (input->coreType())
+        {
             case StateMachineBool::typeKey:
                 m_InputInstances[i] = new SMIBool(input->as<StateMachineBool>(), this);
                 break;
@@ -346,7 +410,8 @@
 
     m_LayerCount = machine->layerCount();
     m_Layers = new StateMachineLayerInstance[m_LayerCount];
-    for (size_t i = 0; i < m_LayerCount; i++) {
+    for (size_t i = 0; i < m_LayerCount; i++)
+    {
         m_Layers[i].init(machine->layer(i), m_ArtboardInstance);
     }
 
@@ -354,40 +419,52 @@
     // representation (an object that stores all the listeners triggered by the
     // shape producing a listener).
     std::unordered_map<uint32_t, HitShape*> hitShapeLookup;
-    for (std::size_t i = 0; i < machine->listenerCount(); i++) {
+    for (std::size_t i = 0; i < machine->listenerCount(); i++)
+    {
         auto listener = machine->listener(i);
 
         // Iterate actual leaf hittable shapes tied to this listener and resolve
         // corresponding ones in the artboard instance.
-        for (auto id : listener->hitShapeIds()) {
+        for (auto id : listener->hitShapeIds())
+        {
             HitShape* hitShape;
             auto itr = hitShapeLookup.find(id);
-            if (itr == hitShapeLookup.end()) {
+            if (itr == hitShapeLookup.end())
+            {
                 auto shape = m_ArtboardInstance->resolve(id);
-                if (shape != nullptr && shape->is<Shape>()) {
+                if (shape != nullptr && shape->is<Shape>())
+                {
                     auto hs = std::make_unique<HitShape>(shape->as<Shape>());
                     hitShapeLookup[id] = hitShape = hs.get();
                     m_HitShapes.push_back(std::move(hs));
-                } else {
+                }
+                else
+                {
                     // No object or not a shape...
                     continue;
                 }
-            } else {
+            }
+            else
+            {
                 hitShape = itr->second;
             }
             hitShape->listeners.push_back(listener);
         }
     }
 
-    for (auto nestedArtboard : instance->nestedArtboards()) {
-        if (nestedArtboard->hasNestedStateMachines()) {
+    for (auto nestedArtboard : instance->nestedArtboards())
+    {
+        if (nestedArtboard->hasNestedStateMachines())
+        {
             m_HitNestedArtboards.push_back(nestedArtboard);
         }
     }
 }
 
-StateMachineInstance::~StateMachineInstance() {
-    for (auto inst : m_InputInstances) {
+StateMachineInstance::~StateMachineInstance()
+{
+    for (auto inst : m_InputInstances)
+    {
         delete inst;
     }
     delete[] m_Layers;
@@ -395,22 +472,27 @@
     Counter::update(Counter::kStateMachineInstance, -1);
 }
 
-bool StateMachineInstance::advance(float seconds) {
+bool StateMachineInstance::advance(float seconds)
+{
     m_NeedsAdvance = false;
-    for (size_t i = 0; i < m_LayerCount; i++) {
-        if (m_Layers[i].advance(seconds, m_InputInstances)) {
+    for (size_t i = 0; i < m_LayerCount; i++)
+    {
+        if (m_Layers[i].advance(seconds, m_InputInstances))
+        {
             m_NeedsAdvance = true;
         }
     }
 
-    for (auto inst : m_InputInstances) {
+    for (auto inst : m_InputInstances)
+    {
         inst->advanced();
     }
 
     return m_NeedsAdvance;
 }
 
-bool StateMachineInstance::advanceAndApply(float seconds) {
+bool StateMachineInstance::advanceAndApply(float seconds)
+{
     bool more = this->advance(seconds);
     m_ArtboardInstance->advance(seconds);
     return more;
@@ -421,49 +503,64 @@
 
 std::string StateMachineInstance::name() const { return m_Machine->name(); }
 
-SMIInput* StateMachineInstance::input(size_t index) const {
-    if (index < m_InputInstances.size()) {
+SMIInput* StateMachineInstance::input(size_t index) const
+{
+    if (index < m_InputInstances.size())
+    {
         return m_InputInstances[index];
     }
     return nullptr;
 }
 
 template <typename SMType, typename InstType>
-InstType* StateMachineInstance::getNamedInput(const std::string& name) const {
-    for (const auto inst : m_InputInstances) {
+InstType* StateMachineInstance::getNamedInput(const std::string& name) const
+{
+    for (const auto inst : m_InputInstances)
+    {
         auto input = inst->input();
-        if (input->is<SMType>() && input->name() == name) {
+        if (input->is<SMType>() && input->name() == name)
+        {
             return static_cast<InstType*>(inst);
         }
     }
     return nullptr;
 }
 
-SMIBool* StateMachineInstance::getBool(const std::string& name) const {
+SMIBool* StateMachineInstance::getBool(const std::string& name) const
+{
     return getNamedInput<StateMachineBool, SMIBool>(name);
 }
-SMINumber* StateMachineInstance::getNumber(const std::string& name) const {
+SMINumber* StateMachineInstance::getNumber(const std::string& name) const
+{
     return getNamedInput<StateMachineNumber, SMINumber>(name);
 }
-SMITrigger* StateMachineInstance::getTrigger(const std::string& name) const {
+SMITrigger* StateMachineInstance::getTrigger(const std::string& name) const
+{
     return getNamedInput<StateMachineTrigger, SMITrigger>(name);
 }
 
-size_t StateMachineInstance::stateChangedCount() const {
+size_t StateMachineInstance::stateChangedCount() const
+{
     size_t count = 0;
-    for (size_t i = 0; i < m_LayerCount; i++) {
-        if (m_Layers[i].stateChangedOnAdvance()) {
+    for (size_t i = 0; i < m_LayerCount; i++)
+    {
+        if (m_Layers[i].stateChangedOnAdvance())
+        {
             count++;
         }
     }
     return count;
 }
 
-const LayerState* StateMachineInstance::stateChangedByIndex(size_t index) const {
+const LayerState* StateMachineInstance::stateChangedByIndex(size_t index) const
+{
     size_t count = 0;
-    for (size_t i = 0; i < m_LayerCount; i++) {
-        if (m_Layers[i].stateChangedOnAdvance()) {
-            if (count == index) {
+    for (size_t i = 0; i < m_LayerCount; i++)
+    {
+        if (m_Layers[i].stateChangedOnAdvance())
+        {
+            if (count == index)
+            {
                 return m_Layers[i].currentState();
             }
             count++;
@@ -472,21 +569,28 @@
     return nullptr;
 }
 
-size_t StateMachineInstance::currentAnimationCount() const {
+size_t StateMachineInstance::currentAnimationCount() const
+{
     size_t count = 0;
-    for (size_t i = 0; i < m_LayerCount; i++) {
-        if (m_Layers[i].currentAnimation() != nullptr) {
+    for (size_t i = 0; i < m_LayerCount; i++)
+    {
+        if (m_Layers[i].currentAnimation() != nullptr)
+        {
             count++;
         }
     }
     return count;
 }
 
-const LinearAnimationInstance* StateMachineInstance::currentAnimationByIndex(size_t index) const {
+const LinearAnimationInstance* StateMachineInstance::currentAnimationByIndex(size_t index) const
+{
     size_t count = 0;
-    for (size_t i = 0; i < m_LayerCount; i++) {
-        if (m_Layers[i].currentAnimation() != nullptr) {
-            if (count == index) {
+    for (size_t i = 0; i < m_LayerCount; i++)
+    {
+        if (m_Layers[i].currentAnimation() != nullptr)
+        {
+            if (count == index)
+            {
                 return m_Layers[i].currentAnimation();
             }
             count++;
diff --git a/src/animation/state_machine_layer.cpp b/src/animation/state_machine_layer.cpp
index 911ff4b..3aaec68 100644
--- a/src/animation/state_machine_layer.cpp
+++ b/src/animation/state_machine_layer.cpp
@@ -8,25 +8,38 @@
 
 using namespace rive;
 
-StateMachineLayer::~StateMachineLayer() {
-    for (auto state : m_States) {
+StateMachineLayer::~StateMachineLayer()
+{
+    for (auto state : m_States)
+    {
         delete state;
     }
 }
 
-StatusCode StateMachineLayer::onAddedDirty(CoreContext* context) {
+StatusCode StateMachineLayer::onAddedDirty(CoreContext* context)
+{
     StatusCode code;
-    for (auto state : m_States) {
-        if ((code = state->onAddedDirty(context)) != StatusCode::Ok) {
+    for (auto state : m_States)
+    {
+        if ((code = state->onAddedDirty(context)) != StatusCode::Ok)
+        {
             return code;
         }
-        switch (state->coreType()) {
-            case AnyState::typeKey: m_Any = state->as<AnyState>(); break;
-            case EntryState::typeKey: m_Entry = state->as<EntryState>(); break;
-            case ExitState::typeKey: m_Exit = state->as<ExitState>(); break;
+        switch (state->coreType())
+        {
+            case AnyState::typeKey:
+                m_Any = state->as<AnyState>();
+                break;
+            case EntryState::typeKey:
+                m_Entry = state->as<EntryState>();
+                break;
+            case ExitState::typeKey:
+                m_Exit = state->as<ExitState>();
+                break;
         }
     }
-    if (m_Any == nullptr || m_Entry == nullptr || m_Exit == nullptr) {
+    if (m_Any == nullptr || m_Entry == nullptr || m_Exit == nullptr)
+    {
         // The layer is corrupt, we must have all three of these states.
         return StatusCode::InvalidObject;
     }
@@ -34,10 +47,13 @@
     return StatusCode::Ok;
 }
 
-StatusCode StateMachineLayer::onAddedClean(CoreContext* context) {
+StatusCode StateMachineLayer::onAddedClean(CoreContext* context)
+{
     StatusCode code;
-    for (auto state : m_States) {
-        if ((code = state->onAddedClean(context)) != StatusCode::Ok) {
+    for (auto state : m_States)
+    {
+        if ((code = state->onAddedClean(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
@@ -47,9 +63,11 @@
 
 void StateMachineLayer::addState(LayerState* state) { m_States.push_back(state); }
 
-StatusCode StateMachineLayer::import(ImportStack& importStack) {
+StatusCode StateMachineLayer::import(ImportStack& importStack)
+{
     auto stateMachineImporter = importStack.latest<StateMachineImporter>(StateMachineBase::typeKey);
-    if (stateMachineImporter == nullptr) {
+    if (stateMachineImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     // WOW -- we're handing off ownership of this!
diff --git a/src/animation/state_machine_listener.cpp b/src/animation/state_machine_listener.cpp
index f5f7146..3e51892 100644
--- a/src/animation/state_machine_listener.cpp
+++ b/src/animation/state_machine_listener.cpp
@@ -12,13 +12,16 @@
 StateMachineListener::StateMachineListener() {}
 StateMachineListener::~StateMachineListener() {}
 
-void StateMachineListener::addAction(std::unique_ptr<ListenerAction> action) {
+void StateMachineListener::addAction(std::unique_ptr<ListenerAction> action)
+{
     m_Actions.push_back(std::move(action));
 }
 
-StatusCode StateMachineListener::import(ImportStack& importStack) {
+StatusCode StateMachineListener::import(ImportStack& importStack)
+{
     auto stateMachineImporter = importStack.latest<StateMachineImporter>(StateMachineBase::typeKey);
-    if (stateMachineImporter == nullptr) {
+    if (stateMachineImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     // Handing off ownership of this!
@@ -26,31 +29,40 @@
     return Super::import(importStack);
 }
 
-const ListenerAction* StateMachineListener::action(size_t index) const {
-    if (index < m_Actions.size()) {
+const ListenerAction* StateMachineListener::action(size_t index) const
+{
+    if (index < m_Actions.size())
+    {
         return m_Actions[index].get();
     }
     return nullptr;
 }
 
-StatusCode StateMachineListener::onAddedClean(CoreContext* context) {
+StatusCode StateMachineListener::onAddedClean(CoreContext* context)
+{
     auto artboard = static_cast<Artboard*>(context);
     auto target = artboard->resolve(targetId());
 
-    for (auto core : artboard->objects()) {
-        if (core == nullptr) {
+    for (auto core : artboard->objects())
+    {
+        if (core == nullptr)
+        {
             continue;
         }
 
         // Iterate artboard to find Shapes that are parented to the target
-        if (core->is<Shape>()) {
+        if (core->is<Shape>())
+        {
             auto shape = core->as<Shape>();
 
             for (ContainerComponent* component = shape; component != nullptr;
-                 component = component->parent()) {
-                if (component == target) {
+                 component = component->parent())
+            {
+                if (component == target)
+                {
                     auto index = artboard->idOf(shape);
-                    if (index != 0) {
+                    if (index != 0)
+                    {
                         m_HitShapesIds.push_back(index);
                     }
                     break;
@@ -63,8 +75,10 @@
 }
 
 void StateMachineListener::performChanges(StateMachineInstance* stateMachineInstance,
-                                          Vec2D position) const {
-    for (auto& action : m_Actions) {
+                                          Vec2D position) const
+{
+    for (auto& action : m_Actions)
+    {
         action->perform(stateMachineInstance, position);
     }
 }
\ No newline at end of file
diff --git a/src/animation/state_transition.cpp b/src/animation/state_transition.cpp
index a8a6f25..0de42e7 100644
--- a/src/animation/state_transition.cpp
+++ b/src/animation/state_transition.cpp
@@ -12,66 +12,84 @@
 
 using namespace rive;
 
-StateTransition::~StateTransition() {
-    for (auto condition : m_Conditions) {
+StateTransition::~StateTransition()
+{
+    for (auto condition : m_Conditions)
+    {
         delete condition;
     }
 }
 
-StatusCode StateTransition::onAddedDirty(CoreContext* context) {
+StatusCode StateTransition::onAddedDirty(CoreContext* context)
+{
     StatusCode code;
-    for (auto condition : m_Conditions) {
-        if ((code = condition->onAddedDirty(context)) != StatusCode::Ok) {
+    for (auto condition : m_Conditions)
+    {
+        if ((code = condition->onAddedDirty(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode StateTransition::onAddedClean(CoreContext* context) {
+StatusCode StateTransition::onAddedClean(CoreContext* context)
+{
     StatusCode code;
-    for (auto condition : m_Conditions) {
-        if ((code = condition->onAddedClean(context)) != StatusCode::Ok) {
+    for (auto condition : m_Conditions)
+    {
+        if ((code = condition->onAddedClean(context)) != StatusCode::Ok)
+        {
             return code;
         }
     }
     return StatusCode::Ok;
 }
 
-StatusCode StateTransition::import(ImportStack& importStack) {
+StatusCode StateTransition::import(ImportStack& importStack)
+{
     auto stateImporter = importStack.latest<LayerStateImporter>(LayerState::typeKey);
-    if (stateImporter == nullptr) {
+    if (stateImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     stateImporter->addTransition(this);
     return Super::import(importStack);
 }
 
-void StateTransition::addCondition(TransitionCondition* condition) {
+void StateTransition::addCondition(TransitionCondition* condition)
+{
     m_Conditions.push_back(condition);
 }
 
-float StateTransition::mixTime(const LayerState* stateFrom) const {
-    if (duration() == 0) {
+float StateTransition::mixTime(const LayerState* stateFrom) const
+{
+    if (duration() == 0)
+    {
         return 0;
     }
     if ((transitionFlags() & StateTransitionFlags::DurationIsPercentage) ==
         StateTransitionFlags::DurationIsPercentage)
     {
         float animationDuration = 0.0f;
-        if (stateFrom->is<AnimationState>()) {
+        if (stateFrom->is<AnimationState>())
+        {
             auto animation = stateFrom->as<AnimationState>()->animation();
-            if (animation != nullptr) {
+            if (animation != nullptr)
+            {
                 animationDuration = animation->durationSeconds();
             }
         }
         return duration() / 100.0f * animationDuration;
-    } else {
+    }
+    else
+    {
         return duration() / 1000.0f;
     }
 }
 
-float StateTransition::exitTimeSeconds(const LayerState* stateFrom, bool absolute) const {
+float StateTransition::exitTimeSeconds(const LayerState* stateFrom, bool absolute) const
+{
     if ((transitionFlags() & StateTransitionFlags::ExitTimeIsPercentage) ==
         StateTransitionFlags::ExitTimeIsPercentage)
     {
@@ -79,7 +97,8 @@
         float start = 0.0f;
 
         auto exitAnimation = exitTimeAnimation(stateFrom);
-        if (exitAnimation != nullptr) {
+        if (exitAnimation != nullptr)
+        {
             start = absolute ? exitAnimation->startSeconds() : 0.0f;
             animationDuration = exitAnimation->durationSeconds();
         }
@@ -90,37 +109,45 @@
 }
 
 const LinearAnimationInstance*
-StateTransition::exitTimeAnimationInstance(const StateInstance* from) const {
+StateTransition::exitTimeAnimationInstance(const StateInstance* from) const
+{
     return from != nullptr && from->state()->is<AnimationState>()
                ? static_cast<const AnimationStateInstance*>(from)->animationInstance()
                : nullptr;
 }
 
-const LinearAnimation* StateTransition::exitTimeAnimation(const LayerState* from) const {
+const LinearAnimation* StateTransition::exitTimeAnimation(const LayerState* from) const
+{
     return from != nullptr && from->is<AnimationState>() ? from->as<AnimationState>()->animation()
                                                          : nullptr;
 }
 
 AllowTransition StateTransition::allowed(StateInstance* stateFrom,
                                          Span<SMIInput*> inputs,
-                                         bool ignoreTriggers) const {
-    if (isDisabled()) {
+                                         bool ignoreTriggers) const
+{
+    if (isDisabled())
+    {
         return AllowTransition::no;
     }
 
-    for (auto condition : m_Conditions) {
+    for (auto condition : m_Conditions)
+    {
         // N.B. state machine instance sanitizes these for us...
         auto input = inputs[condition->inputId()];
 
         if ((ignoreTriggers && condition->is<TransitionTriggerCondition>()) ||
-            !condition->evaluate(input)) {
+            !condition->evaluate(input))
+        {
             return AllowTransition::no;
         }
     }
 
-    if (enableExitTime()) {
+    if (enableExitTime())
+    {
         auto exitAnimation = exitTimeAnimationInstance(stateFrom);
-        if (exitAnimation != nullptr) {
+        if (exitAnimation != nullptr)
+        {
             // Exit time is specified in a value less than a single loop, so we
             // want to allow exiting regardless of which loop we're on. To do
             // that we bring the exit time up to the loop our lastTime is at.
@@ -143,12 +170,14 @@
             //       .... but i suspect that will introduce some more issues?
 
             // There's only one iteration in oneShot,
-            if (exitTime <= duration && animationFrom->loop() != Loop::oneShot) {
+            if (exitTime <= duration && animationFrom->loop() != Loop::oneShot)
+            {
                 // Get exit time relative to the loop lastTime was in.
                 exitTime += std::floor(lastTime / duration) * duration;
             }
 
-            if (time < exitTime) {
+            if (time < exitTime)
+            {
                 return AllowTransition::waitingForExit;
             }
         }
@@ -156,11 +185,13 @@
     return AllowTransition::yes;
 }
 
-bool StateTransition::applyExitCondition(StateInstance* from) const {
+bool StateTransition::applyExitCondition(StateInstance* from) const
+{
     // Hold exit time when the user has set to pauseOnExit on this condition
     // (only valid when exiting from an Animation).
     bool useExitTime = enableExitTime() && (from != nullptr && from->state()->is<AnimationState>());
-    if (pauseOnExit() && useExitTime) {
+    if (pauseOnExit() && useExitTime)
+    {
         static_cast<AnimationStateInstance*>(from)->animationInstance()->time(
             exitTimeSeconds(from->state(), true));
         return true;
diff --git a/src/animation/system_state_instance.cpp b/src/animation/system_state_instance.cpp
index 3b6da97..88e6194 100644
--- a/src/animation/system_state_instance.cpp
+++ b/src/animation/system_state_instance.cpp
@@ -2,7 +2,8 @@
 using namespace rive;
 
 SystemStateInstance::SystemStateInstance(const LayerState* layerState, ArtboardInstance* instance) :
-    StateInstance(layerState) {}
+    StateInstance(layerState)
+{}
 
 void SystemStateInstance::advance(float seconds, Span<SMIInput*>) {}
 void SystemStateInstance::apply(float mix) {}
diff --git a/src/animation/transition_bool_condition.cpp b/src/animation/transition_bool_condition.cpp
index 34b1292..206c3b5 100644
--- a/src/animation/transition_bool_condition.cpp
+++ b/src/animation/transition_bool_condition.cpp
@@ -5,15 +5,18 @@
 
 using namespace rive;
 
-bool TransitionBoolCondition::validateInputType(const StateMachineInput* input) const {
+bool TransitionBoolCondition::validateInputType(const StateMachineInput* input) const
+{
     // A null input is valid as the StateMachine can attempt to limp along if we
     // introduce new input types that old conditions are expected to handle in
     // newer runtimes. The older runtimes will just evaluate them to true.
     return input == nullptr || input->is<StateMachineBool>();
 }
 
-bool TransitionBoolCondition::evaluate(const SMIInput* inputInstance) const {
-    if (inputInstance == nullptr) {
+bool TransitionBoolCondition::evaluate(const SMIInput* inputInstance) const
+{
+    if (inputInstance == nullptr)
+    {
         return true;
     }
     auto boolInput = reinterpret_cast<const SMIBool*>(inputInstance);
diff --git a/src/animation/transition_condition.cpp b/src/animation/transition_condition.cpp
index 39d008e..23b0fe6 100644
--- a/src/animation/transition_condition.cpp
+++ b/src/animation/transition_condition.cpp
@@ -10,22 +10,27 @@
 
 StatusCode TransitionCondition::onAddedClean(CoreContext* context) { return StatusCode::Ok; }
 
-StatusCode TransitionCondition::import(ImportStack& importStack) {
+StatusCode TransitionCondition::import(ImportStack& importStack)
+{
     auto stateMachineImporter = importStack.latest<StateMachineImporter>(StateMachine::typeKey);
-    if (stateMachineImporter == nullptr) {
+    if (stateMachineImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
 
     // Make sure the inputId doesn't overflow the input buffer.
-    if ((size_t)inputId() >= stateMachineImporter->stateMachine()->inputCount()) {
+    if ((size_t)inputId() >= stateMachineImporter->stateMachine()->inputCount())
+    {
         return StatusCode::InvalidObject;
     }
-    if (!validateInputType(stateMachineImporter->stateMachine()->input((size_t)inputId()))) {
+    if (!validateInputType(stateMachineImporter->stateMachine()->input((size_t)inputId())))
+    {
         return StatusCode::InvalidObject;
     }
 
     auto transitionImporter = importStack.latest<StateTransitionImporter>(StateTransition::typeKey);
-    if (transitionImporter == nullptr) {
+    if (transitionImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     transitionImporter->addCondition(this);
diff --git a/src/animation/transition_number_condition.cpp b/src/animation/transition_number_condition.cpp
index 6a3aa87..7c64dc2 100644
--- a/src/animation/transition_number_condition.cpp
+++ b/src/animation/transition_number_condition.cpp
@@ -5,26 +5,36 @@
 
 using namespace rive;
 
-bool TransitionNumberCondition::validateInputType(const StateMachineInput* input) const {
+bool TransitionNumberCondition::validateInputType(const StateMachineInput* input) const
+{
     // A null input is valid as the StateMachine can attempt to limp along if we
     // introduce new input types that old conditions are expected to handle in
     // newer runtimes. The older runtimes will just evaluate them to true.
     return input == nullptr || input->is<StateMachineNumber>();
 }
 
-bool TransitionNumberCondition::evaluate(const SMIInput* inputInstance) const {
-    if (inputInstance == nullptr) {
+bool TransitionNumberCondition::evaluate(const SMIInput* inputInstance) const
+{
+    if (inputInstance == nullptr)
+    {
         return true;
     }
     auto numberInput = reinterpret_cast<const SMINumber*>(inputInstance);
 
-    switch (op()) {
-        case TransitionConditionOp::equal: return numberInput->value() == value();
-        case TransitionConditionOp::notEqual: return numberInput->value() != value();
-        case TransitionConditionOp::lessThanOrEqual: return numberInput->value() <= value();
-        case TransitionConditionOp::lessThan: return numberInput->value() < value();
-        case TransitionConditionOp::greaterThanOrEqual: return numberInput->value() >= value();
-        case TransitionConditionOp::greaterThan: return numberInput->value() > value();
+    switch (op())
+    {
+        case TransitionConditionOp::equal:
+            return numberInput->value() == value();
+        case TransitionConditionOp::notEqual:
+            return numberInput->value() != value();
+        case TransitionConditionOp::lessThanOrEqual:
+            return numberInput->value() <= value();
+        case TransitionConditionOp::lessThan:
+            return numberInput->value() < value();
+        case TransitionConditionOp::greaterThanOrEqual:
+            return numberInput->value() >= value();
+        case TransitionConditionOp::greaterThan:
+            return numberInput->value() > value();
     }
     return false;
 }
\ No newline at end of file
diff --git a/src/animation/transition_trigger_condition.cpp b/src/animation/transition_trigger_condition.cpp
index b5e8524..601e4be 100644
--- a/src/animation/transition_trigger_condition.cpp
+++ b/src/animation/transition_trigger_condition.cpp
@@ -5,20 +5,24 @@
 
 using namespace rive;
 
-bool TransitionTriggerCondition::validateInputType(const StateMachineInput* input) const {
+bool TransitionTriggerCondition::validateInputType(const StateMachineInput* input) const
+{
     // A null input is valid as the StateMachine can attempt to limp along if we
     // introduce new input types that old conditions are expected to handle in
     // newer runtimes. The older runtimes will just evaluate them to true.
     return input == nullptr || input->is<StateMachineTrigger>();
 }
 
-bool TransitionTriggerCondition::evaluate(const SMIInput* inputInstance) const {
-    if (inputInstance == nullptr) {
+bool TransitionTriggerCondition::evaluate(const SMIInput* inputInstance) const
+{
+    if (inputInstance == nullptr)
+    {
         return true;
     }
     auto triggerInput = reinterpret_cast<const SMITrigger*>(inputInstance);
 
-    if (triggerInput->m_Fired) {
+    if (triggerInput->m_Fired)
+    {
         return true;
     }
     return false;
diff --git a/src/artboard.cpp b/src/artboard.cpp
index 94026da..5de0d90 100644
--- a/src/artboard.cpp
+++ b/src/artboard.cpp
@@ -22,10 +22,13 @@
 
 using namespace rive;
 
-Artboard::~Artboard() {
-    for (auto object : m_Objects) {
+Artboard::~Artboard()
+{
+    for (auto object : m_Objects)
+    {
         // First object is artboard
-        if (object == this) {
+        if (object == this)
+        {
             continue;
         }
         delete object;
@@ -35,22 +38,27 @@
     // machines, so don't delete them here, they'll get cleaned up when the
     // source is deleted.
     // TODO: move this logic into ArtboardInstance destructor???
-    if (!m_IsInstance) {
-        for (auto object : m_Animations) {
+    if (!m_IsInstance)
+    {
+        for (auto object : m_Animations)
+        {
             delete object;
         }
-        for (auto object : m_StateMachines) {
+        for (auto object : m_StateMachines)
+        {
             delete object;
         }
     }
 }
 
-static bool canContinue(StatusCode code) {
+static bool canContinue(StatusCode code)
+{
     // We currently only cease loading on invalid object.
     return code != StatusCode::InvalidObject;
 }
 
-StatusCode Artboard::initialize() {
+StatusCode Artboard::initialize()
+{
     StatusCode code;
 
     // these will be re-built in update() -- are they needed here?
@@ -60,12 +68,15 @@
     // onAddedDirty guarantees that all objects are now available so they can be
     // looked up by index/id. This is where nodes find their parents, but they
     // can't assume that their parent's parent will have resolved yet.
-    for (auto object : m_Objects) {
-        if (object == nullptr) {
+    for (auto object : m_Objects)
+    {
+        if (object == nullptr)
+        {
             // objects can be null if they were not understood by this runtime.
             continue;
         }
-        if (!canContinue(code = object->onAddedDirty(this))) {
+        if (!canContinue(code = object->onAddedDirty(this)))
+        {
             return code;
         }
     }
@@ -75,15 +86,20 @@
     // running this code for instances will effectively initialize them twice. This can lead to
     // unpredictable behaviour. One such example was that resolved objects like listener inputs were
     // being added to lists twice.
-    if (!isInstance()) {
-        for (auto object : m_Animations) {
-            if (!canContinue(code = object->onAddedDirty(this))) {
+    if (!isInstance())
+    {
+        for (auto object : m_Animations)
+        {
+            if (!canContinue(code = object->onAddedDirty(this)))
+            {
                 return code;
             }
         }
 
-        for (auto object : m_StateMachines) {
-            if (!canContinue(code = object->onAddedDirty(this))) {
+        for (auto object : m_StateMachines)
+        {
+            if (!canContinue(code = object->onAddedDirty(this)))
+            {
                 return code;
             }
         }
@@ -98,20 +114,28 @@
     // assume that they have resolved too. This is where the whole hierarchy is
     // linked up and we can traverse it to find other references (my parent's
     // parent should be type X can be checked now).
-    for (auto object : m_Objects) {
-        if (object == nullptr) {
+    for (auto object : m_Objects)
+    {
+        if (object == nullptr)
+        {
             continue;
         }
-        if (!canContinue(code = object->onAddedClean(this))) {
+        if (!canContinue(code = object->onAddedClean(this)))
+        {
             return code;
         }
-        switch (object->coreType()) {
-            case DrawRulesBase::typeKey: {
+        switch (object->coreType())
+        {
+            case DrawRulesBase::typeKey:
+            {
                 DrawRules* rules = reinterpret_cast<DrawRules*>(object);
                 Core* component = resolve(rules->parentId());
-                if (component != nullptr) {
+                if (component != nullptr)
+                {
                     componentDrawRules[component] = rules;
-                } else {
+                }
+                else
+                {
                     fprintf(stderr,
                             "Artboard::initialize - Draw rule targets missing "
                             "component width id %d\n",
@@ -125,15 +149,20 @@
         }
     }
 
-    if (!isInstance()) {
-        for (auto object : m_Animations) {
-            if (!canContinue(code = object->onAddedClean(this))) {
+    if (!isInstance())
+    {
+        for (auto object : m_Animations)
+        {
+            if (!canContinue(code = object->onAddedClean(this)))
+            {
                 return code;
             }
         }
 
-        for (auto object : m_StateMachines) {
-            if (!canContinue(code = object->onAddedClean(this))) {
+        for (auto object : m_StateMachines)
+        {
+            if (!canContinue(code = object->onAddedClean(this)))
+            {
                 return code;
             }
         }
@@ -141,21 +170,27 @@
 
     // Multi-level references have been built up, now we can
     // actually mark what's dependent on what.
-    for (auto object : m_Objects) {
-        if (object == nullptr) {
+    for (auto object : m_Objects)
+    {
+        if (object == nullptr)
+        {
             continue;
         }
-        if (object->is<Component>()) {
+        if (object->is<Component>())
+        {
             object->as<Component>()->buildDependencies();
         }
-        if (object->is<Drawable>()) {
+        if (object->is<Drawable>())
+        {
             Drawable* drawable = object->as<Drawable>();
             m_Drawables.push_back(drawable);
 
             for (ContainerComponent* parent = drawable; parent != nullptr;
-                 parent = parent->parent()) {
+                 parent = parent->parent())
+            {
                 auto itr = componentDrawRules.find(parent);
-                if (itr != componentDrawRules.end()) {
+                if (itr != componentDrawRules.end())
+                {
                     drawable->flattenedDrawRules = itr->second;
                     break;
                 }
@@ -168,23 +203,30 @@
     DrawTarget root;
     // Build up the draw order. Look for draw targets and build
     // their dependencies.
-    for (auto object : m_Objects) {
-        if (object == nullptr) {
+    for (auto object : m_Objects)
+    {
+        if (object == nullptr)
+        {
             continue;
         }
-        if (object->is<DrawTarget>()) {
+        if (object->is<DrawTarget>())
+        {
             DrawTarget* target = object->as<DrawTarget>();
             root.addDependent(target);
 
             auto dependentRules = target->drawable()->flattenedDrawRules;
-            if (dependentRules != nullptr) {
+            if (dependentRules != nullptr)
+            {
                 // Because we don't store targets on rules, we need
                 // to find the targets that belong to this rule
                 // here.
-                for (auto object : m_Objects) {
-                    if (object != nullptr && object->is<DrawTarget>()) {
+                for (auto object : m_Objects)
+                {
+                    if (object != nullptr && object->is<DrawTarget>())
+                    {
                         DrawTarget* dependentTarget = object->as<DrawTarget>();
-                        if (dependentTarget->parent() == dependentRules) {
+                        if (dependentTarget->parent() == dependentRules)
+                        {
                             dependentTarget->addDependent(target);
                         }
                     }
@@ -197,70 +239,92 @@
     sorter.sort(&root, drawTargetOrder);
     auto itr = drawTargetOrder.begin();
     itr++;
-    while (itr != drawTargetOrder.end()) {
+    while (itr != drawTargetOrder.end())
+    {
         m_DrawTargets.push_back(reinterpret_cast<DrawTarget*>(*itr++));
     }
 
     return StatusCode::Ok;
 }
 
-void Artboard::sortDrawOrder() {
-    for (auto target : m_DrawTargets) {
+void Artboard::sortDrawOrder()
+{
+    for (auto target : m_DrawTargets)
+    {
         target->first = target->last = nullptr;
     }
 
     m_FirstDrawable = nullptr;
     Drawable* lastDrawable = nullptr;
-    for (auto drawable : m_Drawables) {
+    for (auto drawable : m_Drawables)
+    {
         auto rules = drawable->flattenedDrawRules;
-        if (rules != nullptr && rules->activeTarget() != nullptr) {
+        if (rules != nullptr && rules->activeTarget() != nullptr)
+        {
 
             auto target = rules->activeTarget();
-            if (target->first == nullptr) {
+            if (target->first == nullptr)
+            {
                 target->first = target->last = drawable;
                 drawable->prev = drawable->next = nullptr;
-            } else {
+            }
+            else
+            {
                 target->last->next = drawable;
                 drawable->prev = target->last;
                 target->last = drawable;
                 drawable->next = nullptr;
             }
-        } else {
+        }
+        else
+        {
             drawable->prev = lastDrawable;
             drawable->next = nullptr;
-            if (lastDrawable == nullptr) {
+            if (lastDrawable == nullptr)
+            {
                 lastDrawable = m_FirstDrawable = drawable;
-            } else {
+            }
+            else
+            {
                 lastDrawable->next = drawable;
                 lastDrawable = drawable;
             }
         }
     }
 
-    for (auto rule : m_DrawTargets) {
-        if (rule->first == nullptr) {
+    for (auto rule : m_DrawTargets)
+    {
+        if (rule->first == nullptr)
+        {
             continue;
         }
         auto targetDrawable = rule->drawable();
-        switch (rule->placement()) {
-            case DrawTargetPlacement::before: {
-                if (targetDrawable->prev != nullptr) {
+        switch (rule->placement())
+        {
+            case DrawTargetPlacement::before:
+            {
+                if (targetDrawable->prev != nullptr)
+                {
                     targetDrawable->prev->next = rule->first;
                     rule->first->prev = targetDrawable->prev;
                 }
-                if (targetDrawable == m_FirstDrawable) {
+                if (targetDrawable == m_FirstDrawable)
+                {
                     m_FirstDrawable = rule->first;
                 }
                 targetDrawable->prev = rule->last;
                 rule->last->next = targetDrawable;
                 break;
             }
-            case DrawTargetPlacement::after: {
-                if (targetDrawable->next != nullptr) {
+            case DrawTargetPlacement::after:
+            {
+                if (targetDrawable->next != nullptr)
+                {
                     targetDrawable->next->prev = rule->last;
                     rule->last->next = targetDrawable->next;
                 }
-                if (targetDrawable == lastDrawable) {
+                if (targetDrawable == lastDrawable)
+                {
                     lastDrawable = rule->last;
                 }
                 targetDrawable->next = rule->first;
@@ -273,11 +337,13 @@
     m_FirstDrawable = lastDrawable;
 }
 
-void Artboard::sortDependencies() {
+void Artboard::sortDependencies()
+{
     DependencySorter sorter;
     sorter.sort(this, m_DependencyOrder);
     unsigned int graphOrder = 0;
-    for (auto component : m_DependencyOrder) {
+    for (auto component : m_DependencyOrder)
+    {
         component->m_GraphOrder = graphOrder++;
     }
     m_Dirt |= ComponentDirt::Components;
@@ -289,50 +355,65 @@
 
 void Artboard::addStateMachine(StateMachine* object) { m_StateMachines.push_back(object); }
 
-void Artboard::addNestedArtboard(NestedArtboard* artboard) {
+void Artboard::addNestedArtboard(NestedArtboard* artboard)
+{
     m_NestedArtboards.push_back(artboard);
 }
 
-Core* Artboard::resolve(uint32_t id) const {
-    if (id >= static_cast<int>(m_Objects.size())) {
+Core* Artboard::resolve(uint32_t id) const
+{
+    if (id >= static_cast<int>(m_Objects.size()))
+    {
         return nullptr;
     }
     return m_Objects[id];
 }
 
-uint32_t Artboard::idOf(Core* object) const {
+uint32_t Artboard::idOf(Core* object) const
+{
     auto it = std::find(m_Objects.begin(), m_Objects.end(), object);
 
-    if (it != m_Objects.end()) {
+    if (it != m_Objects.end())
+    {
         return castTo<uint32_t>(it - m_Objects.begin());
-    } else {
+    }
+    else
+    {
         return 0;
     }
 }
 
-void Artboard::onComponentDirty(Component* component) {
+void Artboard::onComponentDirty(Component* component)
+{
     m_Dirt |= ComponentDirt::Components;
 
     /// If the order of the component is less than the current dirt
     /// depth, update the dirt depth so that the update loop can break
     /// out early and re-run (something up the tree is dirty).
-    if (component->graphOrder() < m_DirtDepth) {
+    if (component->graphOrder() < m_DirtDepth)
+    {
         m_DirtDepth = component->graphOrder();
     }
 }
 
 void Artboard::onDirty(ComponentDirt dirt) { m_Dirt |= ComponentDirt::Components; }
 
-void Artboard::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::DrawOrder)) {
+void Artboard::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::DrawOrder))
+    {
         sortDrawOrder();
     }
-    if (hasDirt(value, ComponentDirt::Path)) {
+    if (hasDirt(value, ComponentDirt::Path))
+    {
         AABB bg = {-width() * originX(), -height() * originY(), width(), height()};
         AABB clip;
-        if (m_FrameOrigin) {
+        if (m_FrameOrigin)
+        {
             clip = {0.0f, 0.0f, width(), height()};
-        } else {
+        }
+        else
+        {
             clip = bg;
         }
         m_ClipPath = factory()->makeRenderPath(clip);
@@ -340,21 +421,26 @@
     }
 }
 
-bool Artboard::updateComponents() {
-    if (hasDirt(ComponentDirt::Components)) {
+bool Artboard::updateComponents()
+{
+    if (hasDirt(ComponentDirt::Components))
+    {
         const int maxSteps = 100;
         int step = 0;
         auto count = m_DependencyOrder.size();
-        while (hasDirt(ComponentDirt::Components) && step < maxSteps) {
+        while (hasDirt(ComponentDirt::Components) && step < maxSteps)
+        {
             m_Dirt = m_Dirt & ~ComponentDirt::Components;
 
             // Track dirt depth here so that if something else marks
             // dirty, we restart.
-            for (unsigned int i = 0; i < count; i++) {
+            for (unsigned int i = 0; i < count; i++)
+            {
                 auto component = m_DependencyOrder[i];
                 m_DirtDepth = i;
                 auto d = component->m_Dirt;
-                if (d == ComponentDirt::None) {
+                if (d == ComponentDirt::None)
+                {
                     continue;
                 }
                 component->m_Dirt = ComponentDirt::None;
@@ -363,7 +449,8 @@
                 // If the update changed the dirt depth by adding dirt
                 // to something before us (in the DAG), early out and
                 // re-run the update.
-                if (m_DirtDepth < i) {
+                if (m_DirtDepth < i)
+                {
                     // We put this in here just to know if we need to
                     // keep this around...
                     assert(false);
@@ -377,35 +464,45 @@
     return false;
 }
 
-bool Artboard::advance(double elapsedSeconds) {
-    for (auto nestedArtboard : m_NestedArtboards) {
+bool Artboard::advance(double elapsedSeconds)
+{
+    for (auto nestedArtboard : m_NestedArtboards)
+    {
         nestedArtboard->advance((float)elapsedSeconds);
     }
     return updateComponents();
 }
 
-Core* Artboard::hitTest(HitInfo* hinfo, const Mat2D* xform) {
-    if (clip()) {
+Core* Artboard::hitTest(HitInfo* hinfo, const Mat2D* xform)
+{
+    if (clip())
+    {
         // TODO: can we get the rawpath for the clip?
     }
 
     auto mx = xform ? *xform : Mat2D();
-    if (m_FrameOrigin) {
+    if (m_FrameOrigin)
+    {
         mx *= Mat2D::fromTranslate(width() * originX(), height() * originY());
     }
 
     Drawable* last = m_FirstDrawable;
-    if (last) {
+    if (last)
+    {
         // walk to the end, so we can visit in reverse-order
-        while (last->prev) {
+        while (last->prev)
+        {
             last = last->prev;
         }
     }
-    for (auto drawable = last; drawable; drawable = drawable->next) {
-        if (drawable->isHidden()) {
+    for (auto drawable = last; drawable; drawable = drawable->next)
+    {
+        if (drawable->isHidden())
+        {
             continue;
         }
-        if (auto c = drawable->hitTest(hinfo, mx)) {
+        if (auto c = drawable->hitTest(hinfo, mx))
+        {
             return c;
         }
     }
@@ -415,28 +512,36 @@
     return nullptr;
 }
 
-void Artboard::draw(Renderer* renderer, DrawOption option) {
+void Artboard::draw(Renderer* renderer, DrawOption option)
+{
     renderer->save();
-    if (clip()) {
+    if (clip())
+    {
         renderer->clipPath(m_ClipPath.get());
     }
 
-    if (m_FrameOrigin) {
+    if (m_FrameOrigin)
+    {
         Mat2D artboardTransform;
         artboardTransform[4] = width() * originX();
         artboardTransform[5] = height() * originY();
         renderer->transform(artboardTransform);
     }
 
-    if (option != DrawOption::kHideBG) {
-        for (auto shapePaint : m_ShapePaints) {
+    if (option != DrawOption::kHideBG)
+    {
+        for (auto shapePaint : m_ShapePaints)
+        {
             shapePaint->draw(renderer, m_BackgroundPath.get());
         }
     }
 
-    if (option != DrawOption::kHideFG) {
-        for (auto drawable = m_FirstDrawable; drawable != nullptr; drawable = drawable->prev) {
-            if (drawable->isHidden()) {
+    if (option != DrawOption::kHideFG)
+    {
+        for (auto drawable = m_FirstDrawable; drawable != nullptr; drawable = drawable->prev)
+        {
+            if (drawable->isHidden())
+            {
                 continue;
             }
             drawable->draw(renderer);
@@ -448,13 +553,17 @@
 
 AABB Artboard::bounds() const { return AABB(0.0f, 0.0f, width(), height()); }
 
-bool Artboard::isTranslucent(const LinearAnimation* anim) const {
+bool Artboard::isTranslucent(const LinearAnimation* anim) const
+{
     // For now we're conservative/lazy -- if we see that any of our paints are
     // animated we assume that might make it non-opaque, so we early out
-    for (const auto& obj : anim->m_KeyedObjects) {
+    for (const auto& obj : anim->m_KeyedObjects)
+    {
         const auto ptr = this->resolve(obj->objectId());
-        for (const auto sp : m_ShapePaints) {
-            if (ptr == sp) {
+        for (const auto sp : m_ShapePaints)
+        {
+            if (ptr == sp)
+            {
                 return true;
             }
         }
@@ -463,69 +572,87 @@
     // If we get here, we have no animations, so just check our paints for
     // opacity
 
-    for (const auto sp : m_ShapePaints) {
-        if (!sp->isTranslucent()) {
+    for (const auto sp : m_ShapePaints)
+    {
+        if (!sp->isTranslucent())
+        {
             return false; // one opaque fill is sufficient to be opaque
         }
     }
     return true;
 }
 
-bool Artboard::isTranslucent(const LinearAnimationInstance* inst) const {
+bool Artboard::isTranslucent(const LinearAnimationInstance* inst) const
+{
     return this->isTranslucent(inst->animation());
 }
 
-std::string Artboard::animationNameAt(size_t index) const {
+std::string Artboard::animationNameAt(size_t index) const
+{
     auto la = this->animation(index);
     return la ? la->name() : nullptr;
 }
 
-std::string Artboard::stateMachineNameAt(size_t index) const {
+std::string Artboard::stateMachineNameAt(size_t index) const
+{
     auto sm = this->stateMachine(index);
     return sm ? sm->name() : nullptr;
 }
 
-LinearAnimation* Artboard::animation(const std::string& name) const {
-    for (auto animation : m_Animations) {
-        if (animation->name() == name) {
+LinearAnimation* Artboard::animation(const std::string& name) const
+{
+    for (auto animation : m_Animations)
+    {
+        if (animation->name() == name)
+        {
             return animation;
         }
     }
     return nullptr;
 }
 
-LinearAnimation* Artboard::animation(size_t index) const {
-    if (index >= m_Animations.size()) {
+LinearAnimation* Artboard::animation(size_t index) const
+{
+    if (index >= m_Animations.size())
+    {
         return nullptr;
     }
     return m_Animations[index];
 }
 
-StateMachine* Artboard::stateMachine(const std::string& name) const {
-    for (auto machine : m_StateMachines) {
-        if (machine->name() == name) {
+StateMachine* Artboard::stateMachine(const std::string& name) const
+{
+    for (auto machine : m_StateMachines)
+    {
+        if (machine->name() == name)
+        {
             return machine;
         }
     }
     return nullptr;
 }
 
-StateMachine* Artboard::stateMachine(size_t index) const {
-    if (index >= m_StateMachines.size()) {
+StateMachine* Artboard::stateMachine(size_t index) const
+{
+    if (index >= m_StateMachines.size())
+    {
         return nullptr;
     }
     return m_StateMachines[index];
 }
 
-int Artboard::defaultStateMachineIndex() const {
+int Artboard::defaultStateMachineIndex() const
+{
     int index = defaultStateMachineId();
-    if ((size_t)index >= m_StateMachines.size()) {
+    if ((size_t)index >= m_StateMachines.size())
+    {
         index = -1;
     }
     return index;
 }
 
-std::unique_ptr<ArtboardInstance> Artboard::instance() const {
+std::unique_ptr<ArtboardInstance> Artboard::instance() const
+{
     std::unique_ptr<ArtboardInstance> artboardClone(new ArtboardInstance);
     artboardClone->copy(*this);
 
@@ -536,23 +663,28 @@
     std::vector<Core*>& cloneObjects = artboardClone->m_Objects;
     cloneObjects.push_back(artboardClone.get());
 
-    if (!m_Objects.empty()) {
+    if (!m_Objects.empty())
+    {
         // Skip first object (artboard).
         auto itr = m_Objects.begin();
-        while (++itr != m_Objects.end()) {
+        while (++itr != m_Objects.end())
+        {
             auto object = *itr;
             cloneObjects.push_back(object == nullptr ? nullptr : object->clone());
         }
     }
 
-    for (auto animation : m_Animations) {
+    for (auto animation : m_Animations)
+    {
         artboardClone->m_Animations.push_back(animation);
     }
-    for (auto stateMachine : m_StateMachines) {
+    for (auto stateMachine : m_StateMachines)
+    {
         artboardClone->m_StateMachines.push_back(stateMachine);
     }
 
-    if (artboardClone->initialize() != StatusCode::Ok) {
+    if (artboardClone->initialize() != StatusCode::Ok)
+    {
         artboardClone = nullptr;
     }
 
@@ -560,24 +692,31 @@
     return artboardClone;
 }
 
-void Artboard::frameOrigin(bool value) {
-    if (value == m_FrameOrigin) {
+void Artboard::frameOrigin(bool value)
+{
+    if (value == m_FrameOrigin)
+    {
         return;
     }
     m_FrameOrigin = value;
     addDirt(ComponentDirt::Path);
 }
 
-StatusCode Artboard::import(ImportStack& importStack) {
+StatusCode Artboard::import(ImportStack& importStack)
+{
     auto backboardImporter = importStack.latest<BackboardImporter>(Backboard::typeKey);
-    if (backboardImporter == nullptr) {
+    if (backboardImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
 
     StatusCode result = Super::import(importStack);
-    if (result == StatusCode::Ok) {
+    if (result == StatusCode::Ok)
+    {
         backboardImporter->addArtboard(this);
-    } else {
+    }
+    else
+    {
         backboardImporter->addMissingArtboard();
     }
     return result;
@@ -593,37 +732,45 @@
 
 ArtboardInstance::~ArtboardInstance() { Counter::update(Counter::kArtboardInstance, -1); }
 
-std::unique_ptr<LinearAnimationInstance> ArtboardInstance::animationAt(size_t index) {
+std::unique_ptr<LinearAnimationInstance> ArtboardInstance::animationAt(size_t index)
+{
     auto la = this->animation(index);
     return la ? std::make_unique<LinearAnimationInstance>(la, this) : nullptr;
 }
 
-std::unique_ptr<LinearAnimationInstance> ArtboardInstance::animationNamed(const std::string& name) {
+std::unique_ptr<LinearAnimationInstance> ArtboardInstance::animationNamed(const std::string& name)
+{
     auto la = this->animation(name);
     return la ? std::make_unique<LinearAnimationInstance>(la, this) : nullptr;
 }
 
-std::unique_ptr<StateMachineInstance> ArtboardInstance::stateMachineAt(size_t index) {
+std::unique_ptr<StateMachineInstance> ArtboardInstance::stateMachineAt(size_t index)
+{
     auto sm = this->stateMachine(index);
     return sm ? std::make_unique<StateMachineInstance>(sm, this) : nullptr;
 }
 
-std::unique_ptr<StateMachineInstance> ArtboardInstance::stateMachineNamed(const std::string& name) {
+std::unique_ptr<StateMachineInstance> ArtboardInstance::stateMachineNamed(const std::string& name)
+{
     auto sm = this->stateMachine(name);
     return sm ? std::make_unique<StateMachineInstance>(sm, this) : nullptr;
 }
 
-std::unique_ptr<StateMachineInstance> ArtboardInstance::defaultStateMachine() {
+std::unique_ptr<StateMachineInstance> ArtboardInstance::defaultStateMachine()
+{
     const int index = this->defaultStateMachineIndex();
     return index >= 0 ? this->stateMachineAt(index) : nullptr;
 }
 
-std::unique_ptr<Scene> ArtboardInstance::defaultScene() {
+std::unique_ptr<Scene> ArtboardInstance::defaultScene()
+{
     std::unique_ptr<Scene> scene = this->defaultStateMachine();
-    if (!scene) {
+    if (!scene)
+    {
         scene = this->stateMachineAt(0);
     }
-    if (!scene) {
+    if (!scene)
+    {
         scene = this->animationAt(0);
     }
     return scene;
diff --git a/src/assets/file_asset.cpp b/src/assets/file_asset.cpp
index cdf6bb6..65f3872 100644
--- a/src/assets/file_asset.cpp
+++ b/src/assets/file_asset.cpp
@@ -4,9 +4,11 @@
 
 using namespace rive;
 
-StatusCode FileAsset::import(ImportStack& importStack) {
+StatusCode FileAsset::import(ImportStack& importStack)
+{
     auto backboardImporter = importStack.latest<BackboardImporter>(Backboard::typeKey);
-    if (backboardImporter == nullptr) {
+    if (backboardImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     backboardImporter->addFileAsset(this);
@@ -14,12 +16,14 @@
     return Super::import(importStack);
 }
 
-std::string FileAsset::uniqueFilename() {
+std::string FileAsset::uniqueFilename()
+{
     // remove final extension
     std::string uniqueFilename = name();
     std::size_t finalDot = uniqueFilename.rfind('.');
 
-    if (finalDot != std::string::npos) {
+    if (finalDot != std::string::npos)
+    {
         uniqueFilename = uniqueFilename.substr(0, finalDot);
     }
     return uniqueFilename + "-" + std::to_string(assetId()) + "." + fileExtension();
diff --git a/src/assets/file_asset_contents.cpp b/src/assets/file_asset_contents.cpp
index 84270a9..c1e869e 100644
--- a/src/assets/file_asset_contents.cpp
+++ b/src/assets/file_asset_contents.cpp
@@ -5,9 +5,11 @@
 
 using namespace rive;
 
-StatusCode FileAssetContents::import(ImportStack& importStack) {
+StatusCode FileAssetContents::import(ImportStack& importStack)
+{
     auto fileAssetImporter = importStack.latest<FileAssetImporter>(FileAsset::typeKey);
-    if (fileAssetImporter == nullptr) {
+    if (fileAssetImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     fileAssetImporter->loadContents(std::unique_ptr<FileAssetContents>(this));
@@ -15,11 +17,13 @@
     return Super::import(importStack);
 }
 
-void FileAssetContents::decodeBytes(Span<const uint8_t> value) {
+void FileAssetContents::decodeBytes(Span<const uint8_t> value)
+{
     m_Bytes = std::vector<uint8_t>(value.begin(), value.end());
 }
 
-void FileAssetContents::copyBytes(const FileAssetContentsBase& object) {
+void FileAssetContents::copyBytes(const FileAssetContentsBase& object)
+{
     // Should never be called.
     assert(false);
 }
diff --git a/src/assets/image_asset.cpp b/src/assets/image_asset.cpp
index 1d07ef3..e34f4c7 100644
--- a/src/assets/image_asset.cpp
+++ b/src/assets/image_asset.cpp
@@ -6,7 +6,8 @@
 
 ImageAsset::~ImageAsset() {}
 
-bool ImageAsset::decode(Span<const uint8_t> data, Factory* factory) {
+bool ImageAsset::decode(Span<const uint8_t> data, Factory* factory)
+{
 #ifdef TESTING
     decodedByteSize = data.size();
 #endif
@@ -14,7 +15,8 @@
     return m_RenderImage != nullptr;
 }
 
-void ImageAsset::renderImage(std::unique_ptr<RenderImage> renderImage) {
+void ImageAsset::renderImage(std::unique_ptr<RenderImage> renderImage)
+{
     m_RenderImage = std::move(renderImage);
 }
 
diff --git a/src/bones/bone.cpp b/src/bones/bone.cpp
index 6265a2c..0cb0edc 100644
--- a/src/bones/bone.cpp
+++ b/src/bones/bone.cpp
@@ -6,17 +6,21 @@
 
 void Bone::addChildBone(Bone* bone) { m_ChildBones.push_back(bone); }
 
-StatusCode Bone::onAddedClean(CoreContext* context) {
+StatusCode Bone::onAddedClean(CoreContext* context)
+{
     Super::onAddedClean(context);
-    if (!parent()->is<Bone>()) {
+    if (!parent()->is<Bone>())
+    {
         return StatusCode::MissingObject;
     }
     parent()->as<Bone>()->addChildBone(this);
     return StatusCode::Ok;
 }
 
-void Bone::lengthChanged() {
-    for (auto bone : m_ChildBones) {
+void Bone::lengthChanged()
+{
+    for (auto bone : m_ChildBones)
+    {
         bone->markTransformDirty();
     }
 }
@@ -27,7 +31,8 @@
 
 Vec2D Bone::tipWorldTranslation() const { return worldTransform() * Vec2D(length(), 0); }
 
-void Bone::addPeerConstraint(Constraint* peer) {
+void Bone::addPeerConstraint(Constraint* peer)
+{
     assert(std::find(m_PeerConstraints.begin(), m_PeerConstraints.end(), peer) ==
            m_PeerConstraints.end());
     m_PeerConstraints.push_back(peer);
diff --git a/src/bones/root_bone.cpp b/src/bones/root_bone.cpp
index 354555b..ff592f9 100644
--- a/src/bones/root_bone.cpp
+++ b/src/bones/root_bone.cpp
@@ -2,7 +2,8 @@
 
 using namespace rive;
 
-StatusCode RootBone::onAddedClean(CoreContext* context) {
+StatusCode RootBone::onAddedClean(CoreContext* context)
+{
     // Intentionally doesn't call Super(Bone)::onAddedClean and goes straight to
     // the super.super TransformComponent as that assumes the parent must be a
     // Bone while a root bone is a special case Bone that can be parented to
diff --git a/src/bones/skin.cpp b/src/bones/skin.cpp
index 233210a..4a67abc 100644
--- a/src/bones/skin.cpp
+++ b/src/bones/skin.cpp
@@ -10,7 +10,8 @@
 
 Skin::~Skin() { delete[] m_BoneTransforms; }
 
-StatusCode Skin::onAddedClean(CoreContext* context) {
+StatusCode Skin::onAddedClean(CoreContext* context)
+{
     m_WorldTransform[0] = xx();
     m_WorldTransform[1] = xy();
     m_WorldTransform[2] = yx();
@@ -19,7 +20,8 @@
     m_WorldTransform[5] = ty();
 
     m_Skinnable = Skinnable::from(parent());
-    if (m_Skinnable == nullptr) {
+    if (m_Skinnable == nullptr)
+    {
         return StatusCode::MissingObject;
     }
 
@@ -28,9 +30,11 @@
     return StatusCode::Ok;
 }
 
-void Skin::update(ComponentDirt value) {
+void Skin::update(ComponentDirt value)
+{
     int bidx = 6;
-    for (auto tendon : m_Tendons) {
+    for (auto tendon : m_Tendons)
+    {
         auto world = tendon->bone()->worldTransform() * tendon->inverseBind();
         m_BoneTransforms[bidx++] = world[0];
         m_BoneTransforms[bidx++] = world[1];
@@ -41,12 +45,15 @@
     }
 }
 
-void Skin::buildDependencies() {
+void Skin::buildDependencies()
+{
     // depend on bones from tendons
-    for (auto tendon : m_Tendons) {
+    for (auto tendon : m_Tendons)
+    {
         auto bone = tendon->bone();
         bone->addDependent(this);
-        for (auto constraint : bone->peerConstraints()) {
+        for (auto constraint : bone->peerConstraints())
+        {
             constraint->parent()->addDependent(this);
         }
     }
@@ -64,8 +71,10 @@
     m_BoneTransforms[5] = 0;
 }
 
-void Skin::deform(Span<Vertex*> vertices) {
-    for (auto vertex : vertices) {
+void Skin::deform(Span<Vertex*> vertices)
+{
+    for (auto vertex : vertices)
+    {
         vertex->deform(m_WorldTransform, m_BoneTransforms);
     }
 }
diff --git a/src/bones/skinnable.cpp b/src/bones/skinnable.cpp
index e06a026..74b33cb 100644
--- a/src/bones/skinnable.cpp
+++ b/src/bones/skinnable.cpp
@@ -4,10 +4,14 @@
 
 using namespace rive;
 
-Skinnable* Skinnable::from(Component* component) {
-    switch (component->coreType()) {
-        case PointsPath::typeKey: return component->as<PointsPath>();
-        case Mesh::typeKey: return component->as<Mesh>();
+Skinnable* Skinnable::from(Component* component)
+{
+    switch (component->coreType())
+    {
+        case PointsPath::typeKey:
+            return component->as<PointsPath>();
+        case Mesh::typeKey:
+            return component->as<Mesh>();
     }
     return nullptr;
 }
diff --git a/src/bones/tendon.cpp b/src/bones/tendon.cpp
index 6e8d204..8f2c147 100644
--- a/src/bones/tendon.cpp
+++ b/src/bones/tendon.cpp
@@ -5,7 +5,8 @@
 
 using namespace rive;
 
-StatusCode Tendon::onAddedDirty(CoreContext* context) {
+StatusCode Tendon::onAddedDirty(CoreContext* context)
+{
     Mat2D bind;
     bind[0] = xx();
     bind[1] = xy();
@@ -14,16 +15,19 @@
     bind[4] = tx();
     bind[5] = ty();
 
-    if (!bind.invert(&m_InverseBind)) {
+    if (!bind.invert(&m_InverseBind))
+    {
         return StatusCode::FailedInversion;
     }
 
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
     auto coreObject = context->resolve(boneId());
-    if (coreObject == nullptr || !coreObject->is<Bone>()) {
+    if (coreObject == nullptr || !coreObject->is<Bone>())
+    {
         return StatusCode::MissingObject;
     }
 
@@ -32,8 +36,10 @@
     return StatusCode::Ok;
 }
 
-StatusCode Tendon::onAddedClean(CoreContext* context) {
-    if (!parent()->is<Skin>()) {
+StatusCode Tendon::onAddedClean(CoreContext* context)
+{
+    if (!parent()->is<Skin>())
+    {
         return StatusCode::MissingObject;
     }
 
diff --git a/src/bones/weight.cpp b/src/bones/weight.cpp
index 8d41fce..642a6e4 100644
--- a/src/bones/weight.cpp
+++ b/src/bones/weight.cpp
@@ -4,12 +4,15 @@
 
 using namespace rive;
 
-StatusCode Weight::onAddedDirty(CoreContext* context) {
+StatusCode Weight::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
-    if (!parent()->is<Vertex>()) {
+    if (!parent()->is<Vertex>())
+    {
         return StatusCode::MissingObject;
     }
 
@@ -18,7 +21,8 @@
     return StatusCode::Ok;
 }
 
-static int encodedWeightValue(unsigned int index, unsigned int data) {
+static int encodedWeightValue(unsigned int index, unsigned int data)
+{
     return (data >> (index * 8)) & 0xFF;
 }
 
@@ -26,11 +30,14 @@
                      unsigned int indices,
                      unsigned int weights,
                      const Mat2D& world,
-                     const float* boneTransforms) {
+                     const float* boneTransforms)
+{
     float xx = 0, xy = 0, yx = 0, yy = 0, tx = 0, ty = 0;
-    for (int i = 0; i < 4; i++) {
+    for (int i = 0; i < 4; i++)
+    {
         int weight = encodedWeightValue(i, weights);
-        if (weight == 0) {
+        if (weight == 0)
+        {
             continue;
         }
 
diff --git a/src/component.cpp b/src/component.cpp
index 864768e..e39da92 100644
--- a/src/component.cpp
+++ b/src/component.cpp
@@ -8,30 +8,37 @@
 
 using namespace rive;
 
-StatusCode Component::onAddedDirty(CoreContext* context) {
+StatusCode Component::onAddedDirty(CoreContext* context)
+{
     m_Artboard = static_cast<Artboard*>(context);
-    if (this == m_Artboard) {
+    if (this == m_Artboard)
+    {
         // We're the artboard, don't parent to ourselves.
         return StatusCode::Ok;
     }
     auto coreObject = context->resolve(parentId());
-    if (coreObject == nullptr || !coreObject->is<ContainerComponent>()) {
+    if (coreObject == nullptr || !coreObject->is<ContainerComponent>())
+    {
         return StatusCode::MissingObject;
     }
     m_Parent = reinterpret_cast<ContainerComponent*>(coreObject);
     return StatusCode::Ok;
 }
 
-void Component::addDependent(Component* component) {
+void Component::addDependent(Component* component)
+{
     // Make it's not already a dependent.
-    if (std::find(m_Dependents.begin(), m_Dependents.end(), component) != m_Dependents.end()) {
+    if (std::find(m_Dependents.begin(), m_Dependents.end(), component) != m_Dependents.end())
+    {
         return;
     }
     m_Dependents.push_back(component);
 }
 
-bool Component::addDirt(ComponentDirt value, bool recurse) {
-    if ((m_Dirt & value) == value) {
+bool Component::addDirt(ComponentDirt value, bool recurse)
+{
+    if ((m_Dirt & value) == value)
+    {
         // Already marked.
         return false;
     }
@@ -43,18 +50,22 @@
 
     m_Artboard->onComponentDirty(this);
 
-    if (!recurse) {
+    if (!recurse)
+    {
         return true;
     }
 
-    for (auto d : m_Dependents) {
+    for (auto d : m_Dependents)
+    {
         d->addDirt(value, true);
     }
     return true;
 }
 
-StatusCode Component::import(ImportStack& importStack) {
-    if (is<Artboard>()) {
+StatusCode Component::import(ImportStack& importStack)
+{
+    if (is<Artboard>())
+    {
         // Artboards are always their first object.
         assert(as<Artboard>()->objects().size() == 0);
         as<Artboard>()->addObject(this);
@@ -62,7 +73,8 @@
     }
 
     auto artboardImporter = importStack.latest<ArtboardImporter>(ArtboardBase::typeKey);
-    if (artboardImporter == nullptr) {
+    if (artboardImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     artboardImporter->addComponent(this);
diff --git a/src/constraints/constraint.cpp b/src/constraints/constraint.cpp
index ed04718..a8c5e60 100644
--- a/src/constraints/constraint.cpp
+++ b/src/constraints/constraint.cpp
@@ -6,8 +6,10 @@
 
 using namespace rive;
 
-StatusCode Constraint::onAddedClean(CoreContext* context) {
-    if (!parent()->is<TransformComponent>()) {
+StatusCode Constraint::onAddedClean(CoreContext* context)
+{
+    if (!parent()->is<TransformComponent>())
+    {
         return StatusCode::InvalidObject;
     }
 
@@ -20,21 +22,25 @@
 
 void Constraint::strengthChanged() { markConstraintDirty(); }
 
-void Constraint::buildDependencies() {
+void Constraint::buildDependencies()
+{
     Super::buildDependencies();
     parent()->addDependent(this);
 }
 
-void Constraint::onDirty(ComponentDirt dirt) {
+void Constraint::onDirty(ComponentDirt dirt)
+{
     // Whenever the constraint gets any dirt, make sure to mark the constrained
     // component dirty.
     markConstraintDirty();
 }
 
 static Mat2D identity;
-const Mat2D& rive::getParentWorld(const TransformComponent& component) {
+const Mat2D& rive::getParentWorld(const TransformComponent& component)
+{
     auto parent = component.parent();
-    if (parent->is<WorldTransformComponent>()) {
+    if (parent->is<WorldTransformComponent>())
+    {
         return parent->as<WorldTransformComponent>()->worldTransform();
     }
     return identity;
diff --git a/src/constraints/distance_constraint.cpp b/src/constraints/distance_constraint.cpp
index 272d49f..498b906 100644
--- a/src/constraints/distance_constraint.cpp
+++ b/src/constraints/distance_constraint.cpp
@@ -5,10 +5,17 @@
 
 using namespace rive;
 
-enum class Mode { Closer = 0, Further = 1, Exact = 2 };
+enum class Mode
+{
+    Closer = 0,
+    Further = 1,
+    Exact = 2
+};
 
-void DistanceConstraint::constrain(TransformComponent* component) {
-    if (m_Target == nullptr) {
+void DistanceConstraint::constrain(TransformComponent* component)
+{
+    if (m_Target == nullptr)
+    {
         return;
     }
 
@@ -18,20 +25,25 @@
     Vec2D toTarget = ourTranslation - targetTranslation;
     float currentDistance = toTarget.length();
 
-    switch (static_cast<Mode>(modeValue())) {
+    switch (static_cast<Mode>(modeValue()))
+    {
         case Mode::Closer:
-            if (currentDistance < distance()) {
+            if (currentDistance < distance())
+            {
                 return;
             }
             break;
         case Mode::Further:
-            if (currentDistance > distance()) {
+            if (currentDistance > distance())
+            {
                 return;
             }
             break;
-        case Mode::Exact: break;
+        case Mode::Exact:
+            break;
     }
-    if (currentDistance < 0.001f) {
+    if (currentDistance < 0.001f)
+    {
         return;
     }
 
diff --git a/src/constraints/ik_constraint.cpp b/src/constraints/ik_constraint.cpp
index 41ac37b..ce366bf 100644
--- a/src/constraints/ik_constraint.cpp
+++ b/src/constraints/ik_constraint.cpp
@@ -8,19 +8,23 @@
 
 static float atan2(Vec2D v) { return std::atan2(v.y, v.x); }
 
-void IKConstraint::buildDependencies() {
+void IKConstraint::buildDependencies()
+{
     Super::buildDependencies();
 
     // IK Constraint needs to depend on the target so that world transform
     // changes can propagate to the bones (and they can be reset before IK
     // runs).
-    if (m_Target != nullptr) {
+    if (m_Target != nullptr)
+    {
         m_Target->addDependent(this);
     }
 }
 
-StatusCode IKConstraint::onAddedClean(CoreContext* context) {
-    if (!parent()->is<Bone>()) {
+StatusCode IKConstraint::onAddedClean(CoreContext* context)
+{
+    if (!parent()->is<Bone>())
+    {
         return StatusCode::InvalidObject;
     }
 
@@ -29,7 +33,8 @@
     std::vector<Bone*> bones;
     bones.push_back(bone);
     // Get the reverse FK chain of bones (from tip up).
-    while (bone->parent()->is<Bone>() && boneCount > 0) {
+    while (bone->parent()->is<Bone>() && boneCount > 0)
+    {
         boneCount--;
         bone = bone->parent()->as<Bone>();
         bone->addPeerConstraint(this);
@@ -39,7 +44,8 @@
     m_FkChain.resize(numBones);
     // Now put them in FK order (top to bottom).
     int idx = 0;
-    for (auto boneItr = bones.rbegin(); boneItr != bones.rend(); ++boneItr) {
+    for (auto boneItr = bones.rbegin(); boneItr != bones.rend(); ++boneItr)
+    {
         BoneChainLink& link = m_FkChain[idx];
         link.index = idx++;
         link.bone = *boneItr;
@@ -55,13 +61,16 @@
     // Find all children of this bone (we don't directly build up
     // hierarchy at runtime, so we have to traverse everything and check
     // parents).
-    for (auto core : artboard->objects()) {
-        if (core == nullptr || !core->is<TransformComponent>()) {
+    for (auto core : artboard->objects())
+    {
+        if (core == nullptr || !core->is<TransformComponent>())
+        {
             continue;
         }
         auto transformComponent = core->as<TransformComponent>();
 
-        for (int i = 1; i < numBones; i++) {
+        for (int i = 1; i < numBones; i++)
+        {
             auto bone = bones[i];
             if (transformComponent->parent() == bone &&
                 std::find(bones.begin(), bones.end(), transformComponent) == bones.end())
@@ -73,17 +82,20 @@
     return Super::onAddedClean(context);
 }
 
-void IKConstraint::markConstraintDirty() {
+void IKConstraint::markConstraintDirty()
+{
     Super::markConstraintDirty();
     // We automatically propagate dirt to the parent constrained bone, but we
     // also need to make sure the other bones we influence above it rebuild
     // their transforms.
-    for (int i = 0, length = (int)m_FkChain.size() - 1; i < length; i++) {
+    for (int i = 0, length = (int)m_FkChain.size() - 1; i < length; i++)
+    {
         m_FkChain[i].bone->markTransformDirty();
     }
 }
 
-void IKConstraint::solve1(BoneChainLink* fk1, const Vec2D& worldTargetTranslation) {
+void IKConstraint::solve1(BoneChainLink* fk1, const Vec2D& worldTargetTranslation)
+{
     Mat2D iworld = fk1->parentWorldInverse;
     Vec2D pA = fk1->bone->worldTranslation();
     Vec2D pBT(worldTargetTranslation);
@@ -101,7 +113,8 @@
 
 void IKConstraint::solve2(BoneChainLink* fk1,
                           BoneChainLink* fk2,
-                          const Vec2D& worldTargetTranslation) {
+                          const Vec2D& worldTargetTranslation)
+{
     Bone* b1 = fk1->bone;
     Bone* b2 = fk2->bone;
     BoneChainLink* firstChild = &(m_FkChain[fk1->index + 1]);
@@ -126,7 +139,8 @@
     float C = std::acos(std::max(-1.0f, std::min(1.0f, (a * a + b * b - c * c) / (2.0f * a * b))));
 
     float r1, r2;
-    if (b2->parent() != b1) {
+    if (b2->parent() != b1)
+    {
         BoneChainLink& secondChild = m_FkChain[fk1->index + 2];
 
         const Mat2D& secondChildWorldInverse = secondChild.parentWorldInverse;
@@ -137,24 +151,32 @@
         Vec2D avLocal = Vec2D::transformDir(pB - pC, secondChildWorldInverse);
         float angleCorrection = -atan2(avLocal);
 
-        if (invertDirection()) {
+        if (invertDirection())
+        {
             r1 = atan2(cv) - A;
             r2 = -C + math::PI + angleCorrection;
-        } else {
+        }
+        else
+        {
             r1 = A + atan2(cv);
             r2 = C - math::PI + angleCorrection;
         }
-    } else if (invertDirection()) {
+    }
+    else if (invertDirection())
+    {
         r1 = atan2(cv) - A;
         r2 = -C + math::PI;
-    } else {
+    }
+    else
+    {
         r1 = A + atan2(cv);
         r2 = C - math::PI;
     }
 
     constrainRotation(*fk1, r1);
     constrainRotation(*firstChild, r2);
-    if (firstChild != fk2) {
+    if (firstChild != fk2)
+    {
         Bone* bone = fk2->bone;
         bone->mutableWorldTransform() = getParentWorld(*bone) * bone->transform();
     }
@@ -164,7 +186,8 @@
     firstChild->angle = r2;
 }
 
-void IKConstraint::constrainRotation(BoneChainLink& fk, float rotation) {
+void IKConstraint::constrainRotation(BoneChainLink& fk, float rotation)
+{
     Bone* bone = fk.bone;
     const Mat2D& parentWorld = getParentWorld(*bone);
     Mat2D& transform = bone->mutableTransform();
@@ -185,7 +208,8 @@
 
     // Skew
     const float skew = c.skew();
-    if (skew != 0.0f) {
+    if (skew != 0.0f)
+    {
         transform[2] = transform[0] * skew + transform[2];
         transform[3] = transform[1] * skew + transform[3];
     }
@@ -193,15 +217,18 @@
     bone->mutableWorldTransform() = parentWorld * transform;
 }
 
-void IKConstraint::constrain(TransformComponent* component) {
-    if (m_Target == nullptr) {
+void IKConstraint::constrain(TransformComponent* component)
+{
+    if (m_Target == nullptr)
+    {
         return;
     }
 
     Vec2D worldTargetTranslation = m_Target->worldTranslation();
 
     // Decompose the chain.
-    for (BoneChainLink& item : m_FkChain) {
+    for (BoneChainLink& item : m_FkChain)
+    {
         auto bone = item.bone;
         const Mat2D& parentWorld = getParentWorld(*bone);
         item.parentWorldInverse = parentWorld.invertOrIdentity();
@@ -212,16 +239,24 @@
     }
 
     int count = (int)m_FkChain.size();
-    switch (count) {
-        case 1: solve1(&m_FkChain[0], worldTargetTranslation); break;
-        case 2: solve2(&m_FkChain[0], &m_FkChain[1], worldTargetTranslation); break;
-        default: {
+    switch (count)
+    {
+        case 1:
+            solve1(&m_FkChain[0], worldTargetTranslation);
+            break;
+        case 2:
+            solve2(&m_FkChain[0], &m_FkChain[1], worldTargetTranslation);
+            break;
+        default:
+        {
             auto last = count - 1;
             BoneChainLink* tip = &m_FkChain[last];
-            for (int i = 0; i < last; i++) {
+            for (int i = 0; i < last; i++)
+            {
                 BoneChainLink* item = &m_FkChain[i];
                 solve2(item, tip, worldTargetTranslation);
-                for (int j = item->index + 1, end = (int)m_FkChain.size() - 1; j < end; j++) {
+                for (int j = item->index + 1, end = (int)m_FkChain.size() - 1; j < end; j++)
+                {
                     BoneChainLink& fk = m_FkChain[j];
                     fk.parentWorldInverse = getParentWorld(*fk.bone).invertOrIdentity();
                 }
@@ -230,14 +265,19 @@
         }
     }
     // At the end, mix the FK angle with the IK angle by strength
-    if (strength() != 1.0f) {
-        for (BoneChainLink& fk : m_FkChain) {
+    if (strength() != 1.0f)
+    {
+        for (BoneChainLink& fk : m_FkChain)
+        {
             float fromAngle = std::fmod(fk.transformComponents.rotation(), math::PI * 2);
             float toAngle = std::fmod(fk.angle, math::PI * 2);
             float diff = toAngle - fromAngle;
-            if (diff > math::PI) {
+            if (diff > math::PI)
+            {
                 diff -= math::PI * 2;
-            } else if (diff < -math::PI) {
+            }
+            else if (diff < -math::PI)
+            {
                 diff += math::PI * 2;
             }
             float angle = fromAngle + diff * strength();
diff --git a/src/constraints/rotation_constraint.cpp b/src/constraints/rotation_constraint.cpp
index d17dbb3..a0003f7 100644
--- a/src/constraints/rotation_constraint.cpp
+++ b/src/constraints/rotation_constraint.cpp
@@ -5,19 +5,25 @@
 
 using namespace rive;
 
-void RotationConstraint::constrain(TransformComponent* component) {
+void RotationConstraint::constrain(TransformComponent* component)
+{
     const Mat2D& transformA = component->worldTransform();
     Mat2D transformB;
     m_ComponentsA = transformA.decompose();
-    if (m_Target == nullptr) {
+    if (m_Target == nullptr)
+    {
         transformB = transformA;
         m_ComponentsB = m_ComponentsA;
-    } else {
+    }
+    else
+    {
         transformB = m_Target->worldTransform();
-        if (sourceSpace() == TransformSpace::local) {
+        if (sourceSpace() == TransformSpace::local)
+        {
             Mat2D inverse;
 
-            if (!getParentWorld(*m_Target).invert(&inverse)) {
+            if (!getParentWorld(*m_Target).invert(&inverse))
+            {
                 return;
             }
             transformB = inverse * transformB;
@@ -25,17 +31,22 @@
 
         m_ComponentsB = transformB.decompose();
 
-        if (!doesCopy()) {
+        if (!doesCopy())
+        {
             m_ComponentsB.rotation(destSpace() == TransformSpace::local ? 0.0f
                                                                         : m_ComponentsA.rotation());
-        } else {
+        }
+        else
+        {
             m_ComponentsB.rotation(m_ComponentsB.rotation() * copyFactor());
-            if (offset()) {
+            if (offset())
+            {
                 m_ComponentsB.rotation(m_ComponentsB.rotation() + component->rotation());
             }
         }
 
-        if (destSpace() == TransformSpace::local) {
+        if (destSpace() == TransformSpace::local)
+        {
             // Destination space is in parent transform coordinates. Recompose
             // the parent local transform and get it in world, then decompose
             // the world for interpolation.
@@ -46,23 +57,28 @@
         }
     }
     bool clampLocal = minMaxSpace() == TransformSpace::local;
-    if (clampLocal) {
+    if (clampLocal)
+    {
         // Apply min max in local space, so transform to local coordinates
         // first.
         transformB = Mat2D::compose(m_ComponentsB);
         Mat2D inverse;
-        if (!getParentWorld(*component).invert(&inverse)) {
+        if (!getParentWorld(*component).invert(&inverse))
+        {
             return;
         }
         m_ComponentsB = (inverse * transformB).decompose();
     }
-    if (max() && m_ComponentsB.rotation() > maxValue()) {
+    if (max() && m_ComponentsB.rotation() > maxValue())
+    {
         m_ComponentsB.rotation(maxValue());
     }
-    if (min() && m_ComponentsB.rotation() < minValue()) {
+    if (min() && m_ComponentsB.rotation() < minValue())
+    {
         m_ComponentsB.rotation(minValue());
     }
-    if (clampLocal) {
+    if (clampLocal)
+    {
         // Transform back to world.
         transformB = Mat2D::compose(m_ComponentsB);
         transformB = getParentWorld(*component) * transformB;
@@ -73,9 +89,12 @@
     float angleB = std::fmod(m_ComponentsB.rotation(), math::PI * 2);
     float diff = angleB - angleA;
 
-    if (diff > math::PI) {
+    if (diff > math::PI)
+    {
         diff -= math::PI * 2;
-    } else if (diff < -math::PI) {
+    }
+    else if (diff < -math::PI)
+    {
         diff += math::PI * 2;
     }
 
diff --git a/src/constraints/scale_constraint.cpp b/src/constraints/scale_constraint.cpp
index 1396d15..e59bce2 100644
--- a/src/constraints/scale_constraint.cpp
+++ b/src/constraints/scale_constraint.cpp
@@ -5,45 +5,60 @@
 
 using namespace rive;
 
-void ScaleConstraint::constrain(TransformComponent* component) {
+void ScaleConstraint::constrain(TransformComponent* component)
+{
     const Mat2D& transformA = component->worldTransform();
     Mat2D transformB;
     m_ComponentsA = transformA.decompose();
-    if (m_Target == nullptr) {
+    if (m_Target == nullptr)
+    {
         transformB = transformA;
         m_ComponentsB = m_ComponentsA;
-    } else {
+    }
+    else
+    {
         transformB = m_Target->worldTransform();
-        if (sourceSpace() == TransformSpace::local) {
+        if (sourceSpace() == TransformSpace::local)
+        {
             Mat2D inverse;
-            if (!getParentWorld(*m_Target).invert(&inverse)) {
+            if (!getParentWorld(*m_Target).invert(&inverse))
+            {
                 return;
             }
             transformB = inverse * transformB;
         }
         m_ComponentsB = transformB.decompose();
 
-        if (!doesCopy()) {
+        if (!doesCopy())
+        {
             m_ComponentsB.scaleX(destSpace() == TransformSpace::local ? 1.0f
                                                                       : m_ComponentsA.scaleX());
-        } else {
+        }
+        else
+        {
             m_ComponentsB.scaleX(m_ComponentsB.scaleX() * copyFactor());
-            if (offset()) {
+            if (offset())
+            {
                 m_ComponentsB.scaleX(m_ComponentsB.scaleX() * component->scaleX());
             }
         }
 
-        if (!doesCopyY()) {
+        if (!doesCopyY())
+        {
             m_ComponentsB.scaleY(destSpace() == TransformSpace::local ? 1.0f
                                                                       : m_ComponentsA.scaleY());
-        } else {
+        }
+        else
+        {
             m_ComponentsB.scaleY(m_ComponentsB.scaleY() * copyFactorY());
-            if (offset()) {
+            if (offset())
+            {
                 m_ComponentsB.scaleY(m_ComponentsB.scaleY() * component->scaleY());
             }
         }
 
-        if (destSpace() == TransformSpace::local) {
+        if (destSpace() == TransformSpace::local)
+        {
             // Destination space is in parent transform coordinates. Recompose
             // the parent local transform and get it in world, then decompose
             // the world for interpolation.
@@ -55,30 +70,37 @@
     }
 
     bool clamplocal = minMaxSpace() == TransformSpace::local;
-    if (clamplocal) {
+    if (clamplocal)
+    {
         // Apply min max in local space, so transform to local coordinates
         // first.
         transformB = Mat2D::compose(m_ComponentsB);
         Mat2D inverse;
-        if (!getParentWorld(*component).invert(&inverse)) {
+        if (!getParentWorld(*component).invert(&inverse))
+        {
             return;
         }
         transformB = inverse * transformB;
         m_ComponentsB = transformB.decompose();
     }
-    if (max() && m_ComponentsB.scaleX() > maxValue()) {
+    if (max() && m_ComponentsB.scaleX() > maxValue())
+    {
         m_ComponentsB.scaleX(maxValue());
     }
-    if (min() && m_ComponentsB.scaleX() < minValue()) {
+    if (min() && m_ComponentsB.scaleX() < minValue())
+    {
         m_ComponentsB.scaleX(minValue());
     }
-    if (maxY() && m_ComponentsB.scaleY() > maxValueY()) {
+    if (maxY() && m_ComponentsB.scaleY() > maxValueY())
+    {
         m_ComponentsB.scaleY(maxValueY());
     }
-    if (minY() && m_ComponentsB.scaleY() < minValueY()) {
+    if (minY() && m_ComponentsB.scaleY() < minValueY())
+    {
         m_ComponentsB.scaleY(minValueY());
     }
-    if (clamplocal) {
+    if (clamplocal)
+    {
         // Transform back to world.
         transformB = Mat2D::compose(m_ComponentsB);
         transformB = getParentWorld(*component) * transformB;
diff --git a/src/constraints/targeted_constraint.cpp b/src/constraints/targeted_constraint.cpp
index 9f7802e..2daaa29 100644
--- a/src/constraints/targeted_constraint.cpp
+++ b/src/constraints/targeted_constraint.cpp
@@ -4,13 +4,16 @@
 
 using namespace rive;
 
-StatusCode TargetedConstraint::onAddedDirty(CoreContext* context) {
+StatusCode TargetedConstraint::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
     auto coreObject = context->resolve(targetId());
-    if (coreObject == nullptr || !coreObject->is<TransformComponent>()) {
+    if (coreObject == nullptr || !coreObject->is<TransformComponent>())
+    {
         return StatusCode::MissingObject;
     }
 
@@ -19,10 +22,12 @@
     return StatusCode::Ok;
 }
 
-void TargetedConstraint::buildDependencies() {
+void TargetedConstraint::buildDependencies()
+{
     // Targeted constraints must have their constrained component (parent)
     // update after the target.
-    if (m_Target != nullptr) {
+    if (m_Target != nullptr)
+    {
         m_Target->addDependent(parent());
     }
 }
\ No newline at end of file
diff --git a/src/constraints/transform_constraint.cpp b/src/constraints/transform_constraint.cpp
index ffa1035..b66b61a 100644
--- a/src/constraints/transform_constraint.cpp
+++ b/src/constraints/transform_constraint.cpp
@@ -5,23 +5,28 @@
 
 using namespace rive;
 
-void TransformConstraint::constrain(TransformComponent* component) {
-    if (m_Target == nullptr) {
+void TransformConstraint::constrain(TransformComponent* component)
+{
+    if (m_Target == nullptr)
+    {
         return;
     }
 
     const Mat2D& transformA = component->worldTransform();
     Mat2D transformB(m_Target->worldTransform());
-    if (sourceSpace() == TransformSpace::local) {
+    if (sourceSpace() == TransformSpace::local)
+    {
         const Mat2D& targetParentWorld = getParentWorld(*m_Target);
 
         Mat2D inverse;
-        if (!targetParentWorld.invert(&inverse)) {
+        if (!targetParentWorld.invert(&inverse))
+        {
             return;
         }
         transformB = inverse * transformB;
     }
-    if (destSpace() == TransformSpace::local) {
+    if (destSpace() == TransformSpace::local)
+    {
         const Mat2D& targetParentWorld = getParentWorld(*component);
         transformB = targetParentWorld * transformB;
     }
@@ -32,9 +37,12 @@
     float angleA = std::fmod(m_ComponentsA.rotation(), math::PI * 2);
     float angleB = std::fmod(m_ComponentsB.rotation(), math::PI * 2);
     float diff = angleB - angleA;
-    if (diff > math::PI) {
+    if (diff > math::PI)
+    {
         diff -= math::PI * 2;
-    } else if (diff < -math::PI) {
+    }
+    else if (diff < -math::PI)
+    {
         diff += math::PI * 2;
     }
 
diff --git a/src/constraints/translation_constraint.cpp b/src/constraints/translation_constraint.cpp
index 7bc56b5..452ae3a 100644
--- a/src/constraints/translation_constraint.cpp
+++ b/src/constraints/translation_constraint.cpp
@@ -6,74 +6,96 @@
 
 using namespace rive;
 
-void TranslationConstraint::constrain(TransformComponent* component) {
+void TranslationConstraint::constrain(TransformComponent* component)
+{
     Mat2D& transformA = component->mutableWorldTransform();
     Vec2D translationA(transformA[4], transformA[5]);
     Vec2D translationB;
-    if (m_Target == nullptr) {
+    if (m_Target == nullptr)
+    {
         translationB = translationA;
-    } else {
+    }
+    else
+    {
         Mat2D transformB(m_Target->worldTransform());
-        if (sourceSpace() == TransformSpace::local) {
+        if (sourceSpace() == TransformSpace::local)
+        {
             const Mat2D& targetParentWorld = getParentWorld(*m_Target);
 
             Mat2D inverse;
-            if (!targetParentWorld.invert(&inverse)) {
+            if (!targetParentWorld.invert(&inverse))
+            {
                 return;
             }
             transformB = inverse * transformB;
         }
         translationB = transformB.translation();
 
-        if (!doesCopy()) {
+        if (!doesCopy())
+        {
             translationB.x = destSpace() == TransformSpace::local ? 0.0f : translationA.x;
-        } else {
+        }
+        else
+        {
             translationB.x *= copyFactor();
-            if (offset()) {
+            if (offset())
+            {
                 translationB.x += component->x();
             }
         }
 
-        if (!doesCopyY()) {
+        if (!doesCopyY())
+        {
             translationB.y = destSpace() == TransformSpace::local ? 0.0f : translationA.y;
-        } else {
+        }
+        else
+        {
             translationB.y *= copyFactorY();
 
-            if (offset()) {
+            if (offset())
+            {
                 translationB.y += component->y();
             }
         }
 
-        if (destSpace() == TransformSpace::local) {
+        if (destSpace() == TransformSpace::local)
+        {
             // Destination space is in parent transform coordinates.
             translationB = getParentWorld(*component) * translationB;
         }
     }
 
     bool clampLocal = minMaxSpace() == TransformSpace::local;
-    if (clampLocal) {
+    if (clampLocal)
+    {
         // Apply min max in local space, so transform to local coordinates
         // first.
         Mat2D inverse;
-        if (!getParentWorld(*component).invert(&inverse)) {
+        if (!getParentWorld(*component).invert(&inverse))
+        {
             return;
         }
         // Get our target world coordinates in parent local.
         translationB = inverse * translationB;
     }
-    if (max() && translationB.x > maxValue()) {
+    if (max() && translationB.x > maxValue())
+    {
         translationB.x = maxValue();
     }
-    if (min() && translationB.x < minValue()) {
+    if (min() && translationB.x < minValue())
+    {
         translationB.x = minValue();
     }
-    if (maxY() && translationB.y > maxValueY()) {
+    if (maxY() && translationB.y > maxValueY())
+    {
         translationB.y = maxValueY();
     }
-    if (minY() && translationB.y < minValueY()) {
+    if (minY() && translationB.y < minValueY())
+    {
         translationB.y = minValueY();
     }
-    if (clampLocal) {
+    if (clampLocal)
+    {
         // Transform back to world.
         translationB = getParentWorld(*component) * translationB;
     }
diff --git a/src/core/binary_reader.cpp b/src/core/binary_reader.cpp
index 18036b5..d00413f 100644
--- a/src/core/binary_reader.cpp
+++ b/src/core/binary_reader.cpp
@@ -6,9 +6,11 @@
 using namespace rive;
 
 BinaryReader::BinaryReader(Span<const uint8_t> bytes) :
-    m_Bytes(bytes), m_Position(bytes.begin()), m_Overflowed(false), m_IntRangeError(false) {}
+    m_Bytes(bytes), m_Position(bytes.begin()), m_Overflowed(false), m_IntRangeError(false)
+{}
 
-bool BinaryReader::reachedEnd() const {
+bool BinaryReader::reachedEnd() const
+{
     return m_Position == m_Bytes.end() || didOverflow() || didIntRangeError();
 }
 
@@ -19,20 +21,24 @@
 
 bool BinaryReader::didIntRangeError() const { return m_IntRangeError; }
 
-void BinaryReader::overflow() {
+void BinaryReader::overflow()
+{
     m_Overflowed = true;
     m_Position = m_Bytes.end();
 }
 
-void BinaryReader::intRangeError() {
+void BinaryReader::intRangeError()
+{
     m_IntRangeError = true;
     m_Position = m_Bytes.end();
 }
 
-uint64_t BinaryReader::readVarUint64() {
+uint64_t BinaryReader::readVarUint64()
+{
     uint64_t value;
     auto readBytes = decode_uint_leb(m_Position, m_Bytes.end(), &value);
-    if (readBytes == 0) {
+    if (readBytes == 0)
+    {
         overflow();
         return 0;
     }
@@ -40,15 +46,18 @@
     return value;
 }
 
-std::string BinaryReader::readString() {
+std::string BinaryReader::readString()
+{
     uint64_t length = readVarUint64();
-    if (didOverflow()) {
+    if (didOverflow())
+    {
         return std::string();
     }
 
     std::vector<char> rawValue((size_t)length + 1);
     auto readBytes = decode_string(length, m_Position, m_Bytes.end(), &rawValue[0]);
-    if (readBytes != length) {
+    if (readBytes != length)
+    {
         overflow();
         return std::string();
     }
@@ -56,9 +65,11 @@
     return std::string(rawValue.data(), (size_t)length);
 }
 
-Span<const uint8_t> BinaryReader::readBytes() {
+Span<const uint8_t> BinaryReader::readBytes()
+{
     uint64_t length = readVarUint64();
-    if (didOverflow()) {
+    if (didOverflow())
+    {
         return Span<const uint8_t>(m_Position, 0);
     }
 
@@ -67,10 +78,12 @@
     return {start, (size_t)length};
 }
 
-float BinaryReader::readFloat32() {
+float BinaryReader::readFloat32()
+{
     float value;
     auto readBytes = decode_float(m_Position, m_Bytes.end(), &value);
-    if (readBytes == 0) {
+    if (readBytes == 0)
+    {
         overflow();
         return 0.0f;
     }
@@ -78,18 +91,22 @@
     return value;
 }
 
-uint8_t BinaryReader::readByte() {
-    if (m_Bytes.end() - m_Position < 1) {
+uint8_t BinaryReader::readByte()
+{
+    if (m_Bytes.end() - m_Position < 1)
+    {
         overflow();
         return 0;
     }
     return *m_Position++;
 }
 
-uint32_t BinaryReader::readUint32() {
+uint32_t BinaryReader::readUint32()
+{
     uint32_t value;
     auto readBytes = decode_uint_32(m_Position, m_Bytes.end(), &value);
-    if (readBytes == 0) {
+    if (readBytes == 0)
+    {
         overflow();
         return 0;
     }
diff --git a/src/core/field_types/core_uint_type.cpp b/src/core/field_types/core_uint_type.cpp
index 15b19c0..4009f50 100644
--- a/src/core/field_types/core_uint_type.cpp
+++ b/src/core/field_types/core_uint_type.cpp
@@ -3,6 +3,7 @@
 
 using namespace rive;
 
-unsigned int CoreUintType::deserialize(BinaryReader& reader) {
+unsigned int CoreUintType::deserialize(BinaryReader& reader)
+{
     return reader.readVarUintAs<unsigned int>();
 }
diff --git a/src/dependency_sorter.cpp b/src/dependency_sorter.cpp
index a2f399b..1bf9f44 100644
--- a/src/dependency_sorter.cpp
+++ b/src/dependency_sorter.cpp
@@ -3,16 +3,20 @@
 
 using namespace rive;
 
-void DependencySorter::sort(Component* root, std::vector<Component*>& order) {
+void DependencySorter::sort(Component* root, std::vector<Component*>& order)
+{
     order.clear();
     visit(root, order);
 }
 
-bool DependencySorter::visit(Component* component, std::vector<Component*>& order) {
-    if (m_Perm.find(component) != m_Perm.end()) {
+bool DependencySorter::visit(Component* component, std::vector<Component*>& order)
+{
+    if (m_Perm.find(component) != m_Perm.end())
+    {
         return true;
     }
-    if (m_Temp.find(component) != m_Temp.end()) {
+    if (m_Temp.find(component) != m_Temp.end())
+    {
         fprintf(stderr, "Dependency cycle!\n");
         return false;
     }
@@ -20,8 +24,10 @@
     m_Temp.emplace(component);
 
     auto dependents = component->dependents();
-    for (auto dependent : dependents) {
-        if (!visit(dependent, order)) {
+    for (auto dependent : dependents)
+    {
+        if (!visit(dependent, order))
+        {
             return false;
         }
     }
diff --git a/src/draw_rules.cpp b/src/draw_rules.cpp
index 4acb10f..4a733db 100644
--- a/src/draw_rules.cpp
+++ b/src/draw_rules.cpp
@@ -5,13 +5,16 @@
 
 using namespace rive;
 
-StatusCode DrawRules::onAddedDirty(CoreContext* context) {
+StatusCode DrawRules::onAddedDirty(CoreContext* context)
+{
     StatusCode result = Super::onAddedDirty(context);
-    if (result != StatusCode::Ok) {
+    if (result != StatusCode::Ok)
+    {
         return result;
     }
     auto coreObject = context->resolve(drawTargetId());
-    if (coreObject != nullptr && coreObject->is<DrawTarget>()) {
+    if (coreObject != nullptr && coreObject->is<DrawTarget>())
+    {
         m_ActiveTarget = reinterpret_cast<DrawTarget*>(coreObject);
     }
 
@@ -20,11 +23,15 @@
 
 StatusCode DrawRules::onAddedClean(CoreContext* context) { return StatusCode::Ok; }
 
-void DrawRules::drawTargetIdChanged() {
+void DrawRules::drawTargetIdChanged()
+{
     auto coreObject = artboard()->resolve(drawTargetId());
-    if (coreObject == nullptr || !coreObject->is<DrawTarget>()) {
+    if (coreObject == nullptr || !coreObject->is<DrawTarget>())
+    {
         m_ActiveTarget = nullptr;
-    } else {
+    }
+    else
+    {
         m_ActiveTarget = reinterpret_cast<DrawTarget*>(coreObject);
     }
     artboard()->addDirt(ComponentDirt::DrawOrder);
diff --git a/src/draw_target.cpp b/src/draw_target.cpp
index 4f7ab45..bf042d8 100644
--- a/src/draw_target.cpp
+++ b/src/draw_target.cpp
@@ -5,13 +5,16 @@
 
 using namespace rive;
 
-StatusCode DrawTarget::onAddedDirty(CoreContext* context) {
+StatusCode DrawTarget::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
     auto coreObject = context->resolve(drawableId());
-    if (coreObject == nullptr || !coreObject->is<Drawable>()) {
+    if (coreObject == nullptr || !coreObject->is<Drawable>())
+    {
         return StatusCode::MissingObject;
     }
     m_Drawable = reinterpret_cast<Drawable*>(coreObject);
diff --git a/src/drawable.cpp b/src/drawable.cpp
index 9c24ca0..32b86ec 100644
--- a/src/drawable.cpp
+++ b/src/drawable.cpp
@@ -8,21 +8,26 @@
 
 void Drawable::addClippingShape(ClippingShape* shape) { m_ClippingShapes.push_back(shape); }
 
-bool Drawable::clip(Renderer* renderer) const {
-    if (m_ClippingShapes.size() == 0) {
+bool Drawable::clip(Renderer* renderer) const
+{
+    if (m_ClippingShapes.size() == 0)
+    {
         return false;
     }
 
     renderer->save();
 
-    for (auto clippingShape : m_ClippingShapes) {
-        if (!clippingShape->isVisible()) {
+    for (auto clippingShape : m_ClippingShapes)
+    {
+        if (!clippingShape->isVisible())
+        {
             continue;
         }
 
         RenderPath* renderPath = clippingShape->renderPath();
         // Can intentionally be null if all the clipping shapes are hidden.
-        if (renderPath != nullptr) {
+        if (renderPath != nullptr)
+        {
             renderer->clipPath(renderPath);
         }
     }
diff --git a/src/factory.cpp b/src/factory.cpp
index 2bf02a8..8be9edf 100644
--- a/src/factory.cpp
+++ b/src/factory.cpp
@@ -8,7 +8,8 @@
 
 using namespace rive;
 
-std::unique_ptr<RenderPath> Factory::makeRenderPath(const AABB& r) {
+std::unique_ptr<RenderPath> Factory::makeRenderPath(const AABB& r)
+{
     RawPath rawPath;
     rawPath.addRect(r);
     return makeRenderPath(rawPath, FillRule::nonZero);
diff --git a/src/file.cpp b/src/file.cpp
index 41e4004..d7f86fb 100644
--- a/src/file.cpp
+++ b/src/file.cpp
@@ -53,30 +53,37 @@
 
 // Import a single Rive runtime object.
 // Used by the file importer.
-static Core* readRuntimeObject(BinaryReader& reader, const RuntimeHeader& header) {
+static Core* readRuntimeObject(BinaryReader& reader, const RuntimeHeader& header)
+{
     auto coreObjectKey = reader.readVarUintAs<int>();
     auto object = CoreRegistry::makeCoreInstance(coreObjectKey);
-    while (true) {
+    while (true)
+    {
         auto propertyKey = reader.readVarUintAs<uint16_t>();
-        if (propertyKey == 0) {
+        if (propertyKey == 0)
+        {
             // Terminator. https://media.giphy.com/media/7TtvTUMm9mp20/giphy.gif
             break;
         }
 
-        if (reader.hasError()) {
+        if (reader.hasError())
+        {
             delete object;
             return nullptr;
         }
-        if (object == nullptr || !object->deserialize(propertyKey, reader)) {
+        if (object == nullptr || !object->deserialize(propertyKey, reader))
+        {
             // We have an unknown object or property, first see if core knows
             // the property type.
             int id = CoreRegistry::propertyFieldId(propertyKey);
-            if (id == -1) {
+            if (id == -1)
+            {
                 // No, check if it's in toc.
                 id = header.propertyFieldId(propertyKey);
             }
 
-            if (id == -1) {
+            if (id == -1)
+            {
                 // Still couldn't find it, give up.
                 fprintf(stderr,
                         "Unknown property key %d, missing from property ToC.\n",
@@ -85,15 +92,25 @@
                 return nullptr;
             }
 
-            switch (id) {
-                case CoreUintType::id: CoreUintType::deserialize(reader); break;
-                case CoreStringType::id: CoreStringType::deserialize(reader); break;
-                case CoreDoubleType::id: CoreDoubleType::deserialize(reader); break;
-                case CoreColorType::id: CoreColorType::deserialize(reader); break;
+            switch (id)
+            {
+                case CoreUintType::id:
+                    CoreUintType::deserialize(reader);
+                    break;
+                case CoreStringType::id:
+                    CoreStringType::deserialize(reader);
+                    break;
+                case CoreDoubleType::id:
+                    CoreDoubleType::deserialize(reader);
+                    break;
+                case CoreColorType::id:
+                    CoreColorType::deserialize(reader);
+                    break;
             }
         }
     }
-    if (object == nullptr) {
+    if (object == nullptr)
+    {
         // fprintf(stderr,
         //         "File contains an unknown object with coreType " RIVE_FMT_U64
         //         ", which " "this runtime doesn't understand.\n",
@@ -104,7 +121,8 @@
 }
 
 File::File(Factory* factory, FileAssetResolver* assetResolver) :
-    m_Factory(factory), m_AssetResolver(assetResolver) {
+    m_Factory(factory), m_AssetResolver(assetResolver)
+{
     Counter::update(Counter::kFile, +1);
 
     assert(factory);
@@ -115,61 +133,81 @@
 std::unique_ptr<File> File::import(Span<const uint8_t> bytes,
                                    Factory* factory,
                                    ImportResult* result,
-                                   FileAssetResolver* assetResolver) {
+                                   FileAssetResolver* assetResolver)
+{
     BinaryReader reader(bytes);
     RuntimeHeader header;
-    if (!RuntimeHeader::read(reader, header)) {
+    if (!RuntimeHeader::read(reader, header))
+    {
         fprintf(stderr, "Bad header\n");
-        if (result) {
+        if (result)
+        {
             *result = ImportResult::malformed;
         }
         return nullptr;
     }
-    if (header.majorVersion() != majorVersion) {
+    if (header.majorVersion() != majorVersion)
+    {
         fprintf(stderr,
                 "Unsupported version %u.%u expected %u.%u.\n",
                 header.majorVersion(),
                 header.minorVersion(),
                 majorVersion,
                 minorVersion);
-        if (result) {
+        if (result)
+        {
             *result = ImportResult::unsupportedVersion;
         }
         return nullptr;
     }
     auto file = std::unique_ptr<File>(new File(factory, assetResolver));
     auto readResult = file->read(reader, header);
-    if (readResult != ImportResult::success) {
+    if (readResult != ImportResult::success)
+    {
         file.reset(nullptr);
     }
-    if (result) {
+    if (result)
+    {
         *result = ImportResult::success;
     }
     return file;
 }
 
-ImportResult File::read(BinaryReader& reader, const RuntimeHeader& header) {
+ImportResult File::read(BinaryReader& reader, const RuntimeHeader& header)
+{
     ImportStack importStack;
-    while (!reader.reachedEnd()) {
+    while (!reader.reachedEnd())
+    {
         auto object = readRuntimeObject(reader, header);
-        if (object == nullptr) {
+        if (object == nullptr)
+        {
             importStack.readNullObject();
             continue;
         }
-        if (object->import(importStack) == StatusCode::Ok) {
-            switch (object->coreType()) {
-                case Backboard::typeKey: m_Backboard.reset(object->as<Backboard>()); break;
-                case Artboard::typeKey: {
+        if (object->import(importStack) == StatusCode::Ok)
+        {
+            switch (object->coreType())
+            {
+                case Backboard::typeKey:
+                    m_Backboard.reset(object->as<Backboard>());
+                    break;
+                case Artboard::typeKey:
+                {
                     Artboard* ab = object->as<Artboard>();
                     ab->m_Factory = m_Factory;
                     m_Artboards.push_back(std::unique_ptr<Artboard>(ab));
-                } break;
-                case ImageAsset::typeKey: {
+                }
+                break;
+                case ImageAsset::typeKey:
+                {
                     auto fa = object->as<FileAsset>();
                     m_FileAssets.push_back(std::unique_ptr<FileAsset>(fa));
-                } break;
+                }
+                break;
             }
-        } else {
+        }
+        else
+        {
             fprintf(stderr, "Failed to import object of type %d\n", object->coreType());
             delete object;
             continue;
@@ -177,7 +215,8 @@
         ImportStackObject* stackObject = nullptr;
         auto stackType = object->coreType();
 
-        switch (stackType) {
+        switch (stackType)
+        {
             case Backboard::typeKey:
                 stackObject = new BackboardImporter(object->as<Backboard>());
                 break;
@@ -190,10 +229,12 @@
             case KeyedObject::typeKey:
                 stackObject = new KeyedObjectImporter(object->as<KeyedObject>());
                 break;
-            case KeyedProperty::typeKey: {
+            case KeyedProperty::typeKey:
+            {
                 auto importer =
                     importStack.latest<LinearAnimationImporter>(LinearAnimation::typeKey);
-                if (importer == nullptr) {
+                if (importer == nullptr)
+                {
                     return ImportResult::malformed;
                 }
                 stackObject =
@@ -203,9 +244,11 @@
             case StateMachine::typeKey:
                 stackObject = new StateMachineImporter(object->as<StateMachine>());
                 break;
-            case StateMachineLayer::typeKey: {
+            case StateMachineLayer::typeKey:
+            {
                 auto artboardImporter = importStack.latest<ArtboardImporter>(ArtboardBase::typeKey);
-                if (artboardImporter == nullptr) {
+                if (artboardImporter == nullptr)
+                {
                     return ImportResult::malformed;
                 }
 
@@ -237,7 +280,8 @@
                 stackType = FileAsset::typeKey;
                 break;
         }
-        if (importStack.makeLatest(stackType, stackObject) != StatusCode::Ok) {
+        if (importStack.makeLatest(stackType, stackObject) != StatusCode::Ok)
+        {
             // Some previous stack item didn't resolve.
             return ImportResult::malformed;
         }
@@ -247,52 +291,65 @@
                                                                          : ImportResult::malformed;
 }
 
-Artboard* File::artboard(std::string name) const {
-    for (const auto& artboard : m_Artboards) {
-        if (artboard->name() == name) {
+Artboard* File::artboard(std::string name) const
+{
+    for (const auto& artboard : m_Artboards)
+    {
+        if (artboard->name() == name)
+        {
             return artboard.get();
         }
     }
     return nullptr;
 }
 
-Artboard* File::artboard() const {
-    if (m_Artboards.empty()) {
+Artboard* File::artboard() const
+{
+    if (m_Artboards.empty())
+    {
         return nullptr;
     }
     return m_Artboards[0].get();
 }
 
-Artboard* File::artboard(size_t index) const {
-    if (index >= m_Artboards.size()) {
+Artboard* File::artboard(size_t index) const
+{
+    if (index >= m_Artboards.size())
+    {
         return nullptr;
     }
     return m_Artboards[index].get();
 }
 
-std::string File::artboardNameAt(size_t index) const {
+std::string File::artboardNameAt(size_t index) const
+{
     auto ab = this->artboard(index);
     return ab ? ab->name() : "";
 }
 
-std::unique_ptr<ArtboardInstance> File::artboardDefault() const {
+std::unique_ptr<ArtboardInstance> File::artboardDefault() const
+{
     auto ab = this->artboard();
     return ab ? ab->instance() : nullptr;
 }
 
-std::unique_ptr<ArtboardInstance> File::artboardAt(size_t index) const {
+std::unique_ptr<ArtboardInstance> File::artboardAt(size_t index) const
+{
     auto ab = this->artboard(index);
     return ab ? ab->instance() : nullptr;
 }
 
-std::unique_ptr<ArtboardInstance> File::artboardNamed(std::string name) const {
+std::unique_ptr<ArtboardInstance> File::artboardNamed(std::string name) const
+{
     auto ab = this->artboard(name);
     return ab ? ab->instance() : nullptr;
 }
 
-std::vector<const FileAsset*> File::assets() const {
+std::vector<const FileAsset*> File::assets() const
+{
     std::vector<const FileAsset*> assets;
-    for (auto itr = m_FileAssets.begin(); itr != m_FileAssets.end(); itr++) {
+    for (auto itr = m_FileAssets.begin(); itr != m_FileAssets.end(); itr++)
+    {
         assets.push_back(itr->get());
     }
     return assets;
@@ -301,35 +358,47 @@
 #ifdef WITH_RIVE_TOOLS
 const std::vector<uint8_t> File::stripAssets(Span<const uint8_t> bytes,
                                              std::set<uint16_t> typeKeys,
-                                             ImportResult* result) {
+                                             ImportResult* result)
+{
     std::vector<uint8_t> strippedData;
     strippedData.reserve(bytes.size());
     BinaryReader reader(bytes);
     RuntimeHeader header;
-    if (!RuntimeHeader::read(reader, header)) {
-        if (result) {
+    if (!RuntimeHeader::read(reader, header))
+    {
+        if (result)
+        {
             *result = ImportResult::malformed;
         }
-
-    } else if (header.majorVersion() != majorVersion) {
-        if (result) {
+    }
+    else if (header.majorVersion() != majorVersion)
+    {
+        if (result)
+        {
             *result = ImportResult::unsupportedVersion;
         }
-    } else {
+    }
+    else
+    {
         strippedData.insert(strippedData.end(), bytes.data(), reader.position());
         const uint8_t* from = reader.position();
         const uint8_t* to = reader.position();
         uint16_t lastAssetType = 0;
-        while (!reader.reachedEnd()) {
+        while (!reader.reachedEnd())
+        {
             auto object = readRuntimeObject(reader, header);
-            if (object == nullptr) {
+            if (object == nullptr)
+            {
                 continue;
             }
-            if (object->is<FileAssetBase>()) {
+            if (object->is<FileAssetBase>())
+            {
                 lastAssetType = object->coreType();
             }
-            if (object->is<FileAssetContents>() && typeKeys.find(lastAssetType) != typeKeys.end()) {
-                if (from != to) {
+            if (object->is<FileAssetContents>() && typeKeys.find(lastAssetType) != typeKeys.end())
+            {
+                if (from != to)
+                {
                     strippedData.insert(strippedData.end(), from, to);
                 }
                 from = reader.position();
@@ -337,7 +406,8 @@
             delete object;
             to = reader.position();
         }
-        if (from != to) {
+        if (from != to)
+        {
             strippedData.insert(strippedData.end(), from, to);
         }
         *result = ImportResult::success;
diff --git a/src/generated/animation/animation_base.cpp b/src/generated/animation/animation_base.cpp
index 81aef8c..e832aeb 100644
--- a/src/generated/animation/animation_base.cpp
+++ b/src/generated/animation/animation_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* AnimationBase::clone() const {
+Core* AnimationBase::clone() const
+{
     auto cloned = new Animation();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/animation_state_base.cpp b/src/generated/animation/animation_state_base.cpp
index 299adb6..922ea8e 100644
--- a/src/generated/animation/animation_state_base.cpp
+++ b/src/generated/animation/animation_state_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* AnimationStateBase::clone() const {
+Core* AnimationStateBase::clone() const
+{
     auto cloned = new AnimationState();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/any_state_base.cpp b/src/generated/animation/any_state_base.cpp
index b590058..54b2a42 100644
--- a/src/generated/animation/any_state_base.cpp
+++ b/src/generated/animation/any_state_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* AnyStateBase::clone() const {
+Core* AnyStateBase::clone() const
+{
     auto cloned = new AnyState();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/blend_animation_1d_base.cpp b/src/generated/animation/blend_animation_1d_base.cpp
index ee1a1c4..a04b71f 100644
--- a/src/generated/animation/blend_animation_1d_base.cpp
+++ b/src/generated/animation/blend_animation_1d_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* BlendAnimation1DBase::clone() const {
+Core* BlendAnimation1DBase::clone() const
+{
     auto cloned = new BlendAnimation1D();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/blend_animation_direct_base.cpp b/src/generated/animation/blend_animation_direct_base.cpp
index af0bec8..98bd50a 100644
--- a/src/generated/animation/blend_animation_direct_base.cpp
+++ b/src/generated/animation/blend_animation_direct_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* BlendAnimationDirectBase::clone() const {
+Core* BlendAnimationDirectBase::clone() const
+{
     auto cloned = new BlendAnimationDirect();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/blend_state_1d_base.cpp b/src/generated/animation/blend_state_1d_base.cpp
index b866eb4..3a287ec 100644
--- a/src/generated/animation/blend_state_1d_base.cpp
+++ b/src/generated/animation/blend_state_1d_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* BlendState1DBase::clone() const {
+Core* BlendState1DBase::clone() const
+{
     auto cloned = new BlendState1D();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/blend_state_direct_base.cpp b/src/generated/animation/blend_state_direct_base.cpp
index 1f2e64d..a0349bc 100644
--- a/src/generated/animation/blend_state_direct_base.cpp
+++ b/src/generated/animation/blend_state_direct_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* BlendStateDirectBase::clone() const {
+Core* BlendStateDirectBase::clone() const
+{
     auto cloned = new BlendStateDirect();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/blend_state_transition_base.cpp b/src/generated/animation/blend_state_transition_base.cpp
index 6b361e1..a4b74d4 100644
--- a/src/generated/animation/blend_state_transition_base.cpp
+++ b/src/generated/animation/blend_state_transition_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* BlendStateTransitionBase::clone() const {
+Core* BlendStateTransitionBase::clone() const
+{
     auto cloned = new BlendStateTransition();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/cubic_interpolator_base.cpp b/src/generated/animation/cubic_interpolator_base.cpp
index 75a2ceb..24eb158 100644
--- a/src/generated/animation/cubic_interpolator_base.cpp
+++ b/src/generated/animation/cubic_interpolator_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* CubicInterpolatorBase::clone() const {
+Core* CubicInterpolatorBase::clone() const
+{
     auto cloned = new CubicInterpolator();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/entry_state_base.cpp b/src/generated/animation/entry_state_base.cpp
index 126024c..68ec90e 100644
--- a/src/generated/animation/entry_state_base.cpp
+++ b/src/generated/animation/entry_state_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* EntryStateBase::clone() const {
+Core* EntryStateBase::clone() const
+{
     auto cloned = new EntryState();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/exit_state_base.cpp b/src/generated/animation/exit_state_base.cpp
index 3991967..12f5ad5 100644
--- a/src/generated/animation/exit_state_base.cpp
+++ b/src/generated/animation/exit_state_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ExitStateBase::clone() const {
+Core* ExitStateBase::clone() const
+{
     auto cloned = new ExitState();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/keyed_object_base.cpp b/src/generated/animation/keyed_object_base.cpp
index f3c108c..57cb7a2 100644
--- a/src/generated/animation/keyed_object_base.cpp
+++ b/src/generated/animation/keyed_object_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* KeyedObjectBase::clone() const {
+Core* KeyedObjectBase::clone() const
+{
     auto cloned = new KeyedObject();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/keyed_property_base.cpp b/src/generated/animation/keyed_property_base.cpp
index b649f54..fe175e5 100644
--- a/src/generated/animation/keyed_property_base.cpp
+++ b/src/generated/animation/keyed_property_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* KeyedPropertyBase::clone() const {
+Core* KeyedPropertyBase::clone() const
+{
     auto cloned = new KeyedProperty();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/keyframe_bool_base.cpp b/src/generated/animation/keyframe_bool_base.cpp
index 441c542..72b141d 100644
--- a/src/generated/animation/keyframe_bool_base.cpp
+++ b/src/generated/animation/keyframe_bool_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* KeyFrameBoolBase::clone() const {
+Core* KeyFrameBoolBase::clone() const
+{
     auto cloned = new KeyFrameBool();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/keyframe_color_base.cpp b/src/generated/animation/keyframe_color_base.cpp
index f601201..93d2a15 100644
--- a/src/generated/animation/keyframe_color_base.cpp
+++ b/src/generated/animation/keyframe_color_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* KeyFrameColorBase::clone() const {
+Core* KeyFrameColorBase::clone() const
+{
     auto cloned = new KeyFrameColor();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/keyframe_double_base.cpp b/src/generated/animation/keyframe_double_base.cpp
index f252dc8..b991a0e 100644
--- a/src/generated/animation/keyframe_double_base.cpp
+++ b/src/generated/animation/keyframe_double_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* KeyFrameDoubleBase::clone() const {
+Core* KeyFrameDoubleBase::clone() const
+{
     auto cloned = new KeyFrameDouble();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/keyframe_id_base.cpp b/src/generated/animation/keyframe_id_base.cpp
index bd5a263..a228b47 100644
--- a/src/generated/animation/keyframe_id_base.cpp
+++ b/src/generated/animation/keyframe_id_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* KeyFrameIdBase::clone() const {
+Core* KeyFrameIdBase::clone() const
+{
     auto cloned = new KeyFrameId();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/linear_animation_base.cpp b/src/generated/animation/linear_animation_base.cpp
index f1d084f..b55beef 100644
--- a/src/generated/animation/linear_animation_base.cpp
+++ b/src/generated/animation/linear_animation_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* LinearAnimationBase::clone() const {
+Core* LinearAnimationBase::clone() const
+{
     auto cloned = new LinearAnimation();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/listener_align_target_base.cpp b/src/generated/animation/listener_align_target_base.cpp
index 9da8b5b..f0c1c95 100644
--- a/src/generated/animation/listener_align_target_base.cpp
+++ b/src/generated/animation/listener_align_target_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ListenerAlignTargetBase::clone() const {
+Core* ListenerAlignTargetBase::clone() const
+{
     auto cloned = new ListenerAlignTarget();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/listener_bool_change_base.cpp b/src/generated/animation/listener_bool_change_base.cpp
index 0b756d5..3cd4cc3 100644
--- a/src/generated/animation/listener_bool_change_base.cpp
+++ b/src/generated/animation/listener_bool_change_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ListenerBoolChangeBase::clone() const {
+Core* ListenerBoolChangeBase::clone() const
+{
     auto cloned = new ListenerBoolChange();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/listener_number_change_base.cpp b/src/generated/animation/listener_number_change_base.cpp
index 8051ae2..55d6212 100644
--- a/src/generated/animation/listener_number_change_base.cpp
+++ b/src/generated/animation/listener_number_change_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ListenerNumberChangeBase::clone() const {
+Core* ListenerNumberChangeBase::clone() const
+{
     auto cloned = new ListenerNumberChange();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/listener_trigger_change_base.cpp b/src/generated/animation/listener_trigger_change_base.cpp
index 732933b..4ead315 100644
--- a/src/generated/animation/listener_trigger_change_base.cpp
+++ b/src/generated/animation/listener_trigger_change_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ListenerTriggerChangeBase::clone() const {
+Core* ListenerTriggerChangeBase::clone() const
+{
     auto cloned = new ListenerTriggerChange();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/nested_bool_base.cpp b/src/generated/animation/nested_bool_base.cpp
index 315ebbd..f21b56c 100644
--- a/src/generated/animation/nested_bool_base.cpp
+++ b/src/generated/animation/nested_bool_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* NestedBoolBase::clone() const {
+Core* NestedBoolBase::clone() const
+{
     auto cloned = new NestedBool();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/nested_number_base.cpp b/src/generated/animation/nested_number_base.cpp
index 4a7fa1d..6e5613c 100644
--- a/src/generated/animation/nested_number_base.cpp
+++ b/src/generated/animation/nested_number_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* NestedNumberBase::clone() const {
+Core* NestedNumberBase::clone() const
+{
     auto cloned = new NestedNumber();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/nested_remap_animation_base.cpp b/src/generated/animation/nested_remap_animation_base.cpp
index be06ba9..ff0a6c6 100644
--- a/src/generated/animation/nested_remap_animation_base.cpp
+++ b/src/generated/animation/nested_remap_animation_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* NestedRemapAnimationBase::clone() const {
+Core* NestedRemapAnimationBase::clone() const
+{
     auto cloned = new NestedRemapAnimation();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/nested_simple_animation_base.cpp b/src/generated/animation/nested_simple_animation_base.cpp
index 3d19b86..283d353 100644
--- a/src/generated/animation/nested_simple_animation_base.cpp
+++ b/src/generated/animation/nested_simple_animation_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* NestedSimpleAnimationBase::clone() const {
+Core* NestedSimpleAnimationBase::clone() const
+{
     auto cloned = new NestedSimpleAnimation();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/nested_state_machine_base.cpp b/src/generated/animation/nested_state_machine_base.cpp
index 460ad2b..ef221f1 100644
--- a/src/generated/animation/nested_state_machine_base.cpp
+++ b/src/generated/animation/nested_state_machine_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* NestedStateMachineBase::clone() const {
+Core* NestedStateMachineBase::clone() const
+{
     auto cloned = new NestedStateMachine();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/nested_trigger_base.cpp b/src/generated/animation/nested_trigger_base.cpp
index 44bb423..526737b 100644
--- a/src/generated/animation/nested_trigger_base.cpp
+++ b/src/generated/animation/nested_trigger_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* NestedTriggerBase::clone() const {
+Core* NestedTriggerBase::clone() const
+{
     auto cloned = new NestedTrigger();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/state_machine_base.cpp b/src/generated/animation/state_machine_base.cpp
index 48d4aa4..7d34670 100644
--- a/src/generated/animation/state_machine_base.cpp
+++ b/src/generated/animation/state_machine_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StateMachineBase::clone() const {
+Core* StateMachineBase::clone() const
+{
     auto cloned = new StateMachine();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/state_machine_bool_base.cpp b/src/generated/animation/state_machine_bool_base.cpp
index 1cb9316..3db764d 100644
--- a/src/generated/animation/state_machine_bool_base.cpp
+++ b/src/generated/animation/state_machine_bool_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StateMachineBoolBase::clone() const {
+Core* StateMachineBoolBase::clone() const
+{
     auto cloned = new StateMachineBool();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/state_machine_layer_base.cpp b/src/generated/animation/state_machine_layer_base.cpp
index cc60f49..acafe6e 100644
--- a/src/generated/animation/state_machine_layer_base.cpp
+++ b/src/generated/animation/state_machine_layer_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StateMachineLayerBase::clone() const {
+Core* StateMachineLayerBase::clone() const
+{
     auto cloned = new StateMachineLayer();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/state_machine_listener_base.cpp b/src/generated/animation/state_machine_listener_base.cpp
index a5315fc..37e95cf 100644
--- a/src/generated/animation/state_machine_listener_base.cpp
+++ b/src/generated/animation/state_machine_listener_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StateMachineListenerBase::clone() const {
+Core* StateMachineListenerBase::clone() const
+{
     auto cloned = new StateMachineListener();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/state_machine_number_base.cpp b/src/generated/animation/state_machine_number_base.cpp
index 3d8e26b..b821aa4 100644
--- a/src/generated/animation/state_machine_number_base.cpp
+++ b/src/generated/animation/state_machine_number_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StateMachineNumberBase::clone() const {
+Core* StateMachineNumberBase::clone() const
+{
     auto cloned = new StateMachineNumber();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/state_machine_trigger_base.cpp b/src/generated/animation/state_machine_trigger_base.cpp
index 6363092..d7890be 100644
--- a/src/generated/animation/state_machine_trigger_base.cpp
+++ b/src/generated/animation/state_machine_trigger_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StateMachineTriggerBase::clone() const {
+Core* StateMachineTriggerBase::clone() const
+{
     auto cloned = new StateMachineTrigger();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/state_transition_base.cpp b/src/generated/animation/state_transition_base.cpp
index 4267482..f535fbd 100644
--- a/src/generated/animation/state_transition_base.cpp
+++ b/src/generated/animation/state_transition_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StateTransitionBase::clone() const {
+Core* StateTransitionBase::clone() const
+{
     auto cloned = new StateTransition();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/transition_bool_condition_base.cpp b/src/generated/animation/transition_bool_condition_base.cpp
index a55fa3f..3b92f3d 100644
--- a/src/generated/animation/transition_bool_condition_base.cpp
+++ b/src/generated/animation/transition_bool_condition_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* TransitionBoolConditionBase::clone() const {
+Core* TransitionBoolConditionBase::clone() const
+{
     auto cloned = new TransitionBoolCondition();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/transition_number_condition_base.cpp b/src/generated/animation/transition_number_condition_base.cpp
index 6861e7f..537addf 100644
--- a/src/generated/animation/transition_number_condition_base.cpp
+++ b/src/generated/animation/transition_number_condition_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* TransitionNumberConditionBase::clone() const {
+Core* TransitionNumberConditionBase::clone() const
+{
     auto cloned = new TransitionNumberCondition();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/animation/transition_trigger_condition_base.cpp b/src/generated/animation/transition_trigger_condition_base.cpp
index c8544be..31dadd3 100644
--- a/src/generated/animation/transition_trigger_condition_base.cpp
+++ b/src/generated/animation/transition_trigger_condition_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* TransitionTriggerConditionBase::clone() const {
+Core* TransitionTriggerConditionBase::clone() const
+{
     auto cloned = new TransitionTriggerCondition();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/artboard_base.cpp b/src/generated/artboard_base.cpp
index 682be5e..612c270 100644
--- a/src/generated/artboard_base.cpp
+++ b/src/generated/artboard_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ArtboardBase::clone() const {
+Core* ArtboardBase::clone() const
+{
     auto cloned = new Artboard();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/assets/file_asset_contents_base.cpp b/src/generated/assets/file_asset_contents_base.cpp
index dd9d526..8d0e376 100644
--- a/src/generated/assets/file_asset_contents_base.cpp
+++ b/src/generated/assets/file_asset_contents_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* FileAssetContentsBase::clone() const {
+Core* FileAssetContentsBase::clone() const
+{
     auto cloned = new FileAssetContents();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/assets/folder_base.cpp b/src/generated/assets/folder_base.cpp
index 109aa68..ba27d04 100644
--- a/src/generated/assets/folder_base.cpp
+++ b/src/generated/assets/folder_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* FolderBase::clone() const {
+Core* FolderBase::clone() const
+{
     auto cloned = new Folder();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/assets/image_asset_base.cpp b/src/generated/assets/image_asset_base.cpp
index 87da493..6b32b1d 100644
--- a/src/generated/assets/image_asset_base.cpp
+++ b/src/generated/assets/image_asset_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ImageAssetBase::clone() const {
+Core* ImageAssetBase::clone() const
+{
     auto cloned = new ImageAsset();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/backboard_base.cpp b/src/generated/backboard_base.cpp
index 64ff18c..c5dfd7a 100644
--- a/src/generated/backboard_base.cpp
+++ b/src/generated/backboard_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* BackboardBase::clone() const {
+Core* BackboardBase::clone() const
+{
     auto cloned = new Backboard();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/bones/bone_base.cpp b/src/generated/bones/bone_base.cpp
index 2ecaf1d..0ad594f 100644
--- a/src/generated/bones/bone_base.cpp
+++ b/src/generated/bones/bone_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* BoneBase::clone() const {
+Core* BoneBase::clone() const
+{
     auto cloned = new Bone();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/bones/cubic_weight_base.cpp b/src/generated/bones/cubic_weight_base.cpp
index c3e4300..4192b74 100644
--- a/src/generated/bones/cubic_weight_base.cpp
+++ b/src/generated/bones/cubic_weight_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* CubicWeightBase::clone() const {
+Core* CubicWeightBase::clone() const
+{
     auto cloned = new CubicWeight();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/bones/root_bone_base.cpp b/src/generated/bones/root_bone_base.cpp
index c4e3a1f..faf1c91 100644
--- a/src/generated/bones/root_bone_base.cpp
+++ b/src/generated/bones/root_bone_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* RootBoneBase::clone() const {
+Core* RootBoneBase::clone() const
+{
     auto cloned = new RootBone();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/bones/skin_base.cpp b/src/generated/bones/skin_base.cpp
index 20741ea..401c65f 100644
--- a/src/generated/bones/skin_base.cpp
+++ b/src/generated/bones/skin_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* SkinBase::clone() const {
+Core* SkinBase::clone() const
+{
     auto cloned = new Skin();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/bones/tendon_base.cpp b/src/generated/bones/tendon_base.cpp
index 5bee774..866209b 100644
--- a/src/generated/bones/tendon_base.cpp
+++ b/src/generated/bones/tendon_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* TendonBase::clone() const {
+Core* TendonBase::clone() const
+{
     auto cloned = new Tendon();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/bones/weight_base.cpp b/src/generated/bones/weight_base.cpp
index 038e3ec..f62cb02 100644
--- a/src/generated/bones/weight_base.cpp
+++ b/src/generated/bones/weight_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* WeightBase::clone() const {
+Core* WeightBase::clone() const
+{
     auto cloned = new Weight();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/constraints/distance_constraint_base.cpp b/src/generated/constraints/distance_constraint_base.cpp
index 00161b5..457fe8c 100644
--- a/src/generated/constraints/distance_constraint_base.cpp
+++ b/src/generated/constraints/distance_constraint_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* DistanceConstraintBase::clone() const {
+Core* DistanceConstraintBase::clone() const
+{
     auto cloned = new DistanceConstraint();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/constraints/ik_constraint_base.cpp b/src/generated/constraints/ik_constraint_base.cpp
index 71df2b2..8a16dac 100644
--- a/src/generated/constraints/ik_constraint_base.cpp
+++ b/src/generated/constraints/ik_constraint_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* IKConstraintBase::clone() const {
+Core* IKConstraintBase::clone() const
+{
     auto cloned = new IKConstraint();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/constraints/rotation_constraint_base.cpp b/src/generated/constraints/rotation_constraint_base.cpp
index 8ca5893..870570f 100644
--- a/src/generated/constraints/rotation_constraint_base.cpp
+++ b/src/generated/constraints/rotation_constraint_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* RotationConstraintBase::clone() const {
+Core* RotationConstraintBase::clone() const
+{
     auto cloned = new RotationConstraint();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/constraints/scale_constraint_base.cpp b/src/generated/constraints/scale_constraint_base.cpp
index 7fe8a87..612fcd4 100644
--- a/src/generated/constraints/scale_constraint_base.cpp
+++ b/src/generated/constraints/scale_constraint_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ScaleConstraintBase::clone() const {
+Core* ScaleConstraintBase::clone() const
+{
     auto cloned = new ScaleConstraint();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/constraints/transform_constraint_base.cpp b/src/generated/constraints/transform_constraint_base.cpp
index fbf2b48..0c594f0 100644
--- a/src/generated/constraints/transform_constraint_base.cpp
+++ b/src/generated/constraints/transform_constraint_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* TransformConstraintBase::clone() const {
+Core* TransformConstraintBase::clone() const
+{
     auto cloned = new TransformConstraint();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/constraints/translation_constraint_base.cpp b/src/generated/constraints/translation_constraint_base.cpp
index 0fe62c8..3de3c2a 100644
--- a/src/generated/constraints/translation_constraint_base.cpp
+++ b/src/generated/constraints/translation_constraint_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* TranslationConstraintBase::clone() const {
+Core* TranslationConstraintBase::clone() const
+{
     auto cloned = new TranslationConstraint();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/draw_rules_base.cpp b/src/generated/draw_rules_base.cpp
index 3e9f51c..67b9c81 100644
--- a/src/generated/draw_rules_base.cpp
+++ b/src/generated/draw_rules_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* DrawRulesBase::clone() const {
+Core* DrawRulesBase::clone() const
+{
     auto cloned = new DrawRules();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/draw_target_base.cpp b/src/generated/draw_target_base.cpp
index 1de0a4d..0578be9 100644
--- a/src/generated/draw_target_base.cpp
+++ b/src/generated/draw_target_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* DrawTargetBase::clone() const {
+Core* DrawTargetBase::clone() const
+{
     auto cloned = new DrawTarget();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/nested_artboard_base.cpp b/src/generated/nested_artboard_base.cpp
index 4daa8c3..46a277e 100644
--- a/src/generated/nested_artboard_base.cpp
+++ b/src/generated/nested_artboard_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* NestedArtboardBase::clone() const {
+Core* NestedArtboardBase::clone() const
+{
     auto cloned = new NestedArtboard();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/node_base.cpp b/src/generated/node_base.cpp
index 160a2f8..7f144d5 100644
--- a/src/generated/node_base.cpp
+++ b/src/generated/node_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* NodeBase::clone() const {
+Core* NodeBase::clone() const
+{
     auto cloned = new Node();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/clipping_shape_base.cpp b/src/generated/shapes/clipping_shape_base.cpp
index fbd7cb9..2c28b3a 100644
--- a/src/generated/shapes/clipping_shape_base.cpp
+++ b/src/generated/shapes/clipping_shape_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ClippingShapeBase::clone() const {
+Core* ClippingShapeBase::clone() const
+{
     auto cloned = new ClippingShape();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/contour_mesh_vertex_base.cpp b/src/generated/shapes/contour_mesh_vertex_base.cpp
index a19d016..8ced9fd 100644
--- a/src/generated/shapes/contour_mesh_vertex_base.cpp
+++ b/src/generated/shapes/contour_mesh_vertex_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ContourMeshVertexBase::clone() const {
+Core* ContourMeshVertexBase::clone() const
+{
     auto cloned = new ContourMeshVertex();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/cubic_asymmetric_vertex_base.cpp b/src/generated/shapes/cubic_asymmetric_vertex_base.cpp
index 15ade38..62b665a 100644
--- a/src/generated/shapes/cubic_asymmetric_vertex_base.cpp
+++ b/src/generated/shapes/cubic_asymmetric_vertex_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* CubicAsymmetricVertexBase::clone() const {
+Core* CubicAsymmetricVertexBase::clone() const
+{
     auto cloned = new CubicAsymmetricVertex();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/cubic_detached_vertex_base.cpp b/src/generated/shapes/cubic_detached_vertex_base.cpp
index 87c799f..22f88ba 100644
--- a/src/generated/shapes/cubic_detached_vertex_base.cpp
+++ b/src/generated/shapes/cubic_detached_vertex_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* CubicDetachedVertexBase::clone() const {
+Core* CubicDetachedVertexBase::clone() const
+{
     auto cloned = new CubicDetachedVertex();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/cubic_mirrored_vertex_base.cpp b/src/generated/shapes/cubic_mirrored_vertex_base.cpp
index df88cf4..fb1731b 100644
--- a/src/generated/shapes/cubic_mirrored_vertex_base.cpp
+++ b/src/generated/shapes/cubic_mirrored_vertex_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* CubicMirroredVertexBase::clone() const {
+Core* CubicMirroredVertexBase::clone() const
+{
     auto cloned = new CubicMirroredVertex();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/ellipse_base.cpp b/src/generated/shapes/ellipse_base.cpp
index 7546e22..df160bb 100644
--- a/src/generated/shapes/ellipse_base.cpp
+++ b/src/generated/shapes/ellipse_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* EllipseBase::clone() const {
+Core* EllipseBase::clone() const
+{
     auto cloned = new Ellipse();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/image_base.cpp b/src/generated/shapes/image_base.cpp
index ae3ed39..60bb78e 100644
--- a/src/generated/shapes/image_base.cpp
+++ b/src/generated/shapes/image_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ImageBase::clone() const {
+Core* ImageBase::clone() const
+{
     auto cloned = new Image();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/mesh_base.cpp b/src/generated/shapes/mesh_base.cpp
index 5cae283..e30a683 100644
--- a/src/generated/shapes/mesh_base.cpp
+++ b/src/generated/shapes/mesh_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* MeshBase::clone() const {
+Core* MeshBase::clone() const
+{
     auto cloned = new Mesh();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/mesh_vertex_base.cpp b/src/generated/shapes/mesh_vertex_base.cpp
index 45171ac..ff36262 100644
--- a/src/generated/shapes/mesh_vertex_base.cpp
+++ b/src/generated/shapes/mesh_vertex_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* MeshVertexBase::clone() const {
+Core* MeshVertexBase::clone() const
+{
     auto cloned = new MeshVertex();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/paint/fill_base.cpp b/src/generated/shapes/paint/fill_base.cpp
index 481495d..1b2dbbc 100644
--- a/src/generated/shapes/paint/fill_base.cpp
+++ b/src/generated/shapes/paint/fill_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* FillBase::clone() const {
+Core* FillBase::clone() const
+{
     auto cloned = new Fill();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/paint/gradient_stop_base.cpp b/src/generated/shapes/paint/gradient_stop_base.cpp
index d9e3a95..0ff71eb 100644
--- a/src/generated/shapes/paint/gradient_stop_base.cpp
+++ b/src/generated/shapes/paint/gradient_stop_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* GradientStopBase::clone() const {
+Core* GradientStopBase::clone() const
+{
     auto cloned = new GradientStop();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/paint/linear_gradient_base.cpp b/src/generated/shapes/paint/linear_gradient_base.cpp
index f446ddf..ad261e7 100644
--- a/src/generated/shapes/paint/linear_gradient_base.cpp
+++ b/src/generated/shapes/paint/linear_gradient_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* LinearGradientBase::clone() const {
+Core* LinearGradientBase::clone() const
+{
     auto cloned = new LinearGradient();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/paint/radial_gradient_base.cpp b/src/generated/shapes/paint/radial_gradient_base.cpp
index 42a0820..79b00d6 100644
--- a/src/generated/shapes/paint/radial_gradient_base.cpp
+++ b/src/generated/shapes/paint/radial_gradient_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* RadialGradientBase::clone() const {
+Core* RadialGradientBase::clone() const
+{
     auto cloned = new RadialGradient();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/paint/solid_color_base.cpp b/src/generated/shapes/paint/solid_color_base.cpp
index 37e350f..df57f7f 100644
--- a/src/generated/shapes/paint/solid_color_base.cpp
+++ b/src/generated/shapes/paint/solid_color_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* SolidColorBase::clone() const {
+Core* SolidColorBase::clone() const
+{
     auto cloned = new SolidColor();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/paint/stroke_base.cpp b/src/generated/shapes/paint/stroke_base.cpp
index b260e98..0c3acba 100644
--- a/src/generated/shapes/paint/stroke_base.cpp
+++ b/src/generated/shapes/paint/stroke_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StrokeBase::clone() const {
+Core* StrokeBase::clone() const
+{
     auto cloned = new Stroke();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/paint/trim_path_base.cpp b/src/generated/shapes/paint/trim_path_base.cpp
index 9a145b7..fb319ca 100644
--- a/src/generated/shapes/paint/trim_path_base.cpp
+++ b/src/generated/shapes/paint/trim_path_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* TrimPathBase::clone() const {
+Core* TrimPathBase::clone() const
+{
     auto cloned = new TrimPath();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/points_path_base.cpp b/src/generated/shapes/points_path_base.cpp
index 4e87789..27169a8 100644
--- a/src/generated/shapes/points_path_base.cpp
+++ b/src/generated/shapes/points_path_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* PointsPathBase::clone() const {
+Core* PointsPathBase::clone() const
+{
     auto cloned = new PointsPath();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/polygon_base.cpp b/src/generated/shapes/polygon_base.cpp
index 4dfa011..96214c5 100644
--- a/src/generated/shapes/polygon_base.cpp
+++ b/src/generated/shapes/polygon_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* PolygonBase::clone() const {
+Core* PolygonBase::clone() const
+{
     auto cloned = new Polygon();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/rectangle_base.cpp b/src/generated/shapes/rectangle_base.cpp
index db0d78f..47a83fe 100644
--- a/src/generated/shapes/rectangle_base.cpp
+++ b/src/generated/shapes/rectangle_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* RectangleBase::clone() const {
+Core* RectangleBase::clone() const
+{
     auto cloned = new Rectangle();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/shape_base.cpp b/src/generated/shapes/shape_base.cpp
index 7595b31..595afa6 100644
--- a/src/generated/shapes/shape_base.cpp
+++ b/src/generated/shapes/shape_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* ShapeBase::clone() const {
+Core* ShapeBase::clone() const
+{
     auto cloned = new Shape();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/star_base.cpp b/src/generated/shapes/star_base.cpp
index 1df8368..3b753c2 100644
--- a/src/generated/shapes/star_base.cpp
+++ b/src/generated/shapes/star_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StarBase::clone() const {
+Core* StarBase::clone() const
+{
     auto cloned = new Star();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/straight_vertex_base.cpp b/src/generated/shapes/straight_vertex_base.cpp
index 19ff88c..a7c99c1 100644
--- a/src/generated/shapes/straight_vertex_base.cpp
+++ b/src/generated/shapes/straight_vertex_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* StraightVertexBase::clone() const {
+Core* StraightVertexBase::clone() const
+{
     auto cloned = new StraightVertex();
     cloned->copy(*this);
     return cloned;
diff --git a/src/generated/shapes/triangle_base.cpp b/src/generated/shapes/triangle_base.cpp
index e7debc1..c4f7e95 100644
--- a/src/generated/shapes/triangle_base.cpp
+++ b/src/generated/shapes/triangle_base.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Core* TriangleBase::clone() const {
+Core* TriangleBase::clone() const
+{
     auto cloned = new Triangle();
     cloned->copy(*this);
     return cloned;
diff --git a/src/hittest_command_path.cpp b/src/hittest_command_path.cpp
index ef5a784..94fe025 100644
--- a/src/hittest_command_path.cpp
+++ b/src/hittest_command_path.cpp
@@ -12,17 +12,20 @@
 
 void HitTestCommandPath::reset() { m_Tester.reset(m_Area); }
 
-void HitTestCommandPath::fillRule(FillRule value) {
+void HitTestCommandPath::fillRule(FillRule value)
+{
     // remember this here, and pass it to test()
     m_FillRule = value;
 }
 
-void HitTestCommandPath::addPath(CommandPath* path, const Mat2D& transform) {
+void HitTestCommandPath::addPath(CommandPath* path, const Mat2D& transform)
+{
     assert(false);
     // not supported
 }
 
-RenderPath* HitTestCommandPath::renderPath() {
+RenderPath* HitTestCommandPath::renderPath()
+{
     assert(false);
     // not supported
     return nullptr;
@@ -32,7 +35,8 @@
 
 void HitTestCommandPath::lineTo(float x, float y) { m_Tester.line(m_Xform * Vec2D(x, y)); }
 
-void HitTestCommandPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y) {
+void HitTestCommandPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y)
+{
     m_Tester.cubic(m_Xform * Vec2D(ox, oy), m_Xform * Vec2D(ix, iy), m_Xform * Vec2D(x, y));
 }
 
diff --git a/src/importers/artboard_importer.cpp b/src/importers/artboard_importer.cpp
index c831324..db008ba 100644
--- a/src/importers/artboard_importer.cpp
+++ b/src/importers/artboard_importer.cpp
@@ -10,17 +10,20 @@
 
 void ArtboardImporter::addComponent(Core* object) { m_Artboard->addObject(object); }
 
-void ArtboardImporter::addAnimation(LinearAnimation* animation) {
+void ArtboardImporter::addAnimation(LinearAnimation* animation)
+{
     m_Artboard->addAnimation(animation);
 }
 
-void ArtboardImporter::addStateMachine(StateMachine* stateMachine) {
+void ArtboardImporter::addStateMachine(StateMachine* stateMachine)
+{
     m_Artboard->addStateMachine(stateMachine);
 }
 
 StatusCode ArtboardImporter::resolve() { return m_Artboard->initialize(); }
 
-bool ArtboardImporter::readNullObject() {
+bool ArtboardImporter::readNullObject()
+{
     addComponent(nullptr);
     return true;
 }
\ No newline at end of file
diff --git a/src/importers/backboard_importer.cpp b/src/importers/backboard_importer.cpp
index 46b3303..70eb109 100644
--- a/src/importers/backboard_importer.cpp
+++ b/src/importers/backboard_importer.cpp
@@ -8,12 +8,15 @@
 using namespace rive;
 
 BackboardImporter::BackboardImporter(Backboard* backboard) :
-    m_Backboard(backboard), m_NextArtboardId(0) {}
-void BackboardImporter::addNestedArtboard(NestedArtboard* artboard) {
+    m_Backboard(backboard), m_NextArtboardId(0)
+{}
+void BackboardImporter::addNestedArtboard(NestedArtboard* artboard)
+{
     m_NestedArtboards.push_back(artboard);
 }
 
-void BackboardImporter::addFileAsset(FileAsset* asset) {
+void BackboardImporter::addFileAsset(FileAsset* asset)
+{
     m_FileAssets.push_back(asset);
     {
         // EDITOR BUG 4204
@@ -22,12 +25,17 @@
         // https://github.com/rive-app/rive/issues/4204
         std::unordered_set<uint32_t> ids;
         uint32_t nextId = 1;
-        for (auto asset : m_FileAssets) {
-            if (ids.count(asset->assetId())) {
+        for (auto asset : m_FileAssets)
+        {
+            if (ids.count(asset->assetId()))
+            {
                 asset->assetId(nextId);
-            } else {
+            }
+            else
+            {
                 ids.insert(asset->assetId());
-                if (asset->assetId() >= nextId) {
+                if (asset->assetId() >= nextId)
+                {
                     nextId = asset->assetId() + 1;
                 }
             }
@@ -37,28 +45,35 @@
     }
 }
 
-void BackboardImporter::addFileAssetReferencer(FileAssetReferencer* referencer) {
+void BackboardImporter::addFileAssetReferencer(FileAssetReferencer* referencer)
+{
     m_FileAssetReferencers.push_back(referencer);
 }
 
-void BackboardImporter::addArtboard(Artboard* artboard) {
+void BackboardImporter::addArtboard(Artboard* artboard)
+{
     m_ArtboardLookup[m_NextArtboardId++] = artboard;
 }
 
 void BackboardImporter::addMissingArtboard() { m_NextArtboardId++; }
 
-StatusCode BackboardImporter::resolve() {
+StatusCode BackboardImporter::resolve()
+{
 
-    for (auto nestedArtboard : m_NestedArtboards) {
+    for (auto nestedArtboard : m_NestedArtboards)
+    {
         auto itr = m_ArtboardLookup.find(nestedArtboard->artboardId());
-        if (itr != m_ArtboardLookup.end()) {
+        if (itr != m_ArtboardLookup.end())
+        {
             auto artboard = itr->second;
-            if (artboard != nullptr) {
+            if (artboard != nullptr)
+            {
                 nestedArtboard->nest(artboard);
             }
         }
     }
-    for (auto referencer : m_FileAssetReferencers) {
+    for (auto referencer : m_FileAssetReferencers)
+    {
         referencer->assets(m_FileAssets);
     }
 
diff --git a/src/importers/file_asset_importer.cpp b/src/importers/file_asset_importer.cpp
index 7a199ff..dc4a214 100644
--- a/src/importers/file_asset_importer.cpp
+++ b/src/importers/file_asset_importer.cpp
@@ -10,21 +10,26 @@
 FileAssetImporter::FileAssetImporter(FileAsset* fileAsset,
                                      FileAssetResolver* assetResolver,
                                      Factory* factory) :
-    m_FileAsset(fileAsset), m_FileAssetResolver(assetResolver), m_Factory(factory) {}
+    m_FileAsset(fileAsset), m_FileAssetResolver(assetResolver), m_Factory(factory)
+{}
 
-void FileAssetImporter::loadContents(std::unique_ptr<FileAssetContents> contents) {
+void FileAssetImporter::loadContents(std::unique_ptr<FileAssetContents> contents)
+{
     // we should only ever be called once
     assert(!m_Content);
     m_Content = std::move(contents);
 
     auto data = m_Content->bytes();
-    if (m_FileAsset->decode(data, m_Factory)) {
+    if (m_FileAsset->decode(data, m_Factory))
+    {
         m_LoadedContents = true;
     }
 }
 
-StatusCode FileAssetImporter::resolve() {
-    if (!m_LoadedContents && m_FileAssetResolver != nullptr) {
+StatusCode FileAssetImporter::resolve()
+{
+    if (!m_LoadedContents && m_FileAssetResolver != nullptr)
+    {
         // Contents weren't available in-band, or they couldn't be decoded. Try
         // to find them out of band.
         m_FileAssetResolver->loadContents(*m_FileAsset);
diff --git a/src/importers/keyed_object_importer.cpp b/src/importers/keyed_object_importer.cpp
index c8477c3..9e93cc9 100644
--- a/src/importers/keyed_object_importer.cpp
+++ b/src/importers/keyed_object_importer.cpp
@@ -7,6 +7,7 @@
 
 KeyedObjectImporter::KeyedObjectImporter(KeyedObject* keyedObject) : m_KeyedObject(keyedObject) {}
 
-void KeyedObjectImporter::addKeyedProperty(std::unique_ptr<KeyedProperty> property) {
+void KeyedObjectImporter::addKeyedProperty(std::unique_ptr<KeyedProperty> property)
+{
     m_KeyedObject->addKeyedProperty(std::move(property));
 }
\ No newline at end of file
diff --git a/src/importers/keyed_property_importer.cpp b/src/importers/keyed_property_importer.cpp
index 6789b0f..8efb275 100644
--- a/src/importers/keyed_property_importer.cpp
+++ b/src/importers/keyed_property_importer.cpp
@@ -7,14 +7,17 @@
 
 KeyedPropertyImporter::KeyedPropertyImporter(LinearAnimation* animation,
                                              KeyedProperty* keyedProperty) :
-    m_Animation(animation), m_KeyedProperty(keyedProperty) {}
+    m_Animation(animation), m_KeyedProperty(keyedProperty)
+{}
 
-void KeyedPropertyImporter::addKeyFrame(std::unique_ptr<KeyFrame> keyFrame) {
+void KeyedPropertyImporter::addKeyFrame(std::unique_ptr<KeyFrame> keyFrame)
+{
     keyFrame->computeSeconds(m_Animation->fps());
     m_KeyedProperty->addKeyFrame(std::move(keyFrame));
 }
 
-bool KeyedPropertyImporter::readNullObject() {
+bool KeyedPropertyImporter::readNullObject()
+{
     // We don't need to add the null keyframe as nothing references them, but we
     // do need to not allow the null to propagate up.
     return true;
diff --git a/src/importers/layer_state_importer.cpp b/src/importers/layer_state_importer.cpp
index 5ac3056..3dc48ee 100644
--- a/src/importers/layer_state_importer.cpp
+++ b/src/importers/layer_state_importer.cpp
@@ -7,12 +7,15 @@
 using namespace rive;
 
 LayerStateImporter::LayerStateImporter(LayerState* state) : m_State(state) {}
-void LayerStateImporter::addTransition(StateTransition* transition) {
+void LayerStateImporter::addTransition(StateTransition* transition)
+{
     m_State->addTransition(transition);
 }
 
-bool LayerStateImporter::addBlendAnimation(BlendAnimation* animation) {
-    if (!m_State->is<BlendState>()) {
+bool LayerStateImporter::addBlendAnimation(BlendAnimation* animation)
+{
+    if (!m_State->is<BlendState>())
+    {
         return false;
     }
     auto blendState = m_State->as<BlendState>();
@@ -21,17 +24,22 @@
     return true;
 }
 
-StatusCode LayerStateImporter::resolve() {
-    if (m_State->is<BlendState>()) {
+StatusCode LayerStateImporter::resolve()
+{
+    if (m_State->is<BlendState>())
+    {
         auto blendState = m_State->as<BlendState>();
-        for (auto transition : blendState->m_Transitions) {
-            if (!transition->is<BlendStateTransition>()) {
+        for (auto transition : blendState->m_Transitions)
+        {
+            if (!transition->is<BlendStateTransition>())
+            {
                 continue;
             }
 
             auto blendStateTransition = transition->as<BlendStateTransition>();
             size_t exitId = blendStateTransition->exitBlendAnimationId();
-            if (exitId < blendState->m_Animations.size()) {
+            if (exitId < blendState->m_Animations.size())
+            {
                 blendStateTransition->m_ExitBlendAnimation = blendState->m_Animations[exitId];
             }
         }
diff --git a/src/importers/linear_animation_importer.cpp b/src/importers/linear_animation_importer.cpp
index 43a9274..b6ab77f 100644
--- a/src/importers/linear_animation_importer.cpp
+++ b/src/importers/linear_animation_importer.cpp
@@ -6,8 +6,10 @@
 using namespace rive;
 
 LinearAnimationImporter::LinearAnimationImporter(LinearAnimation* animation) :
-    m_Animation(animation) {}
+    m_Animation(animation)
+{}
 
-void LinearAnimationImporter::addKeyedObject(std::unique_ptr<KeyedObject> object) {
+void LinearAnimationImporter::addKeyedObject(std::unique_ptr<KeyedObject> object)
+{
     m_Animation->addKeyedObject(std::move(object));
 }
\ No newline at end of file
diff --git a/src/importers/state_machine_importer.cpp b/src/importers/state_machine_importer.cpp
index f5aa9aa..7994c37 100644
--- a/src/importers/state_machine_importer.cpp
+++ b/src/importers/state_machine_importer.cpp
@@ -8,19 +8,23 @@
 
 StateMachineImporter::StateMachineImporter(StateMachine* machine) : m_StateMachine(machine) {}
 
-void StateMachineImporter::addLayer(std::unique_ptr<StateMachineLayer> layer) {
+void StateMachineImporter::addLayer(std::unique_ptr<StateMachineLayer> layer)
+{
     m_StateMachine->addLayer(std::move(layer));
 }
 
-void StateMachineImporter::addInput(std::unique_ptr<StateMachineInput> input) {
+void StateMachineImporter::addInput(std::unique_ptr<StateMachineInput> input)
+{
     m_StateMachine->addInput(std::move(input));
 }
 
-void StateMachineImporter::addListener(std::unique_ptr<StateMachineListener> listener) {
+void StateMachineImporter::addListener(std::unique_ptr<StateMachineListener> listener)
+{
     m_StateMachine->addListener(std::move(listener));
 }
 
-bool StateMachineImporter::readNullObject() {
+bool StateMachineImporter::readNullObject()
+{
     // Hard assumption that we won't add new layer types...
     m_StateMachine->addInput(nullptr);
     return true;
diff --git a/src/importers/state_machine_layer_importer.cpp b/src/importers/state_machine_layer_importer.cpp
index 6361884..f56899a 100644
--- a/src/importers/state_machine_layer_importer.cpp
+++ b/src/importers/state_machine_layer_importer.cpp
@@ -8,27 +8,36 @@
 using namespace rive;
 StateMachineLayerImporter::StateMachineLayerImporter(StateMachineLayer* layer,
                                                      const Artboard* artboard) :
-    m_Layer(layer), m_Artboard(artboard) {}
+    m_Layer(layer), m_Artboard(artboard)
+{}
 void StateMachineLayerImporter::addState(LayerState* state) { m_Layer->addState(state); }
 
-StatusCode StateMachineLayerImporter::resolve() {
+StatusCode StateMachineLayerImporter::resolve()
+{
 
-    for (auto state : m_Layer->m_States) {
-        if (state->is<AnimationState>()) {
+    for (auto state : m_Layer->m_States)
+    {
+        if (state->is<AnimationState>())
+        {
             auto animationState = state->as<AnimationState>();
 
-            if (animationState->animationId() < m_Artboard->animationCount()) {
+            if (animationState->animationId() < m_Artboard->animationCount())
+            {
                 animationState->m_Animation = m_Artboard->animation(animationState->animationId());
-                if (animationState->m_Animation == nullptr) {
+                if (animationState->m_Animation == nullptr)
+                {
                     return StatusCode::MissingObject;
                 }
             }
         }
-        for (auto transition : state->m_Transitions) {
-            if ((size_t)transition->stateToId() < m_Layer->m_States.size()) {
+        for (auto transition : state->m_Transitions)
+        {
+            if ((size_t)transition->stateToId() < m_Layer->m_States.size())
+            {
                 transition->m_StateTo = m_Layer->m_States[transition->stateToId()];
-
-            } else {
+            }
+            else
+            {
                 return StatusCode::InvalidObject;
             }
         }
@@ -36,7 +45,8 @@
     return StatusCode::Ok;
 }
 
-bool StateMachineLayerImporter::readNullObject() {
+bool StateMachineLayerImporter::readNullObject()
+{
     // Add an 'empty' generic state that can be transitioned to/from but doesn't
     // effectively do anything. This allows us to deal with unexpected new state
     // types the runtime won't be able to understand. It'll still be able to
diff --git a/src/importers/state_machine_listener_importer.cpp b/src/importers/state_machine_listener_importer.cpp
index 4e31707..d2ece94 100644
--- a/src/importers/state_machine_listener_importer.cpp
+++ b/src/importers/state_machine_listener_importer.cpp
@@ -5,9 +5,11 @@
 using namespace rive;
 
 StateMachineListenerImporter::StateMachineListenerImporter(StateMachineListener* listener) :
-    m_StateMachineListener(listener) {}
+    m_StateMachineListener(listener)
+{}
 
-void StateMachineListenerImporter::addAction(std::unique_ptr<ListenerAction> action) {
+void StateMachineListenerImporter::addAction(std::unique_ptr<ListenerAction> action)
+{
     m_StateMachineListener->addAction(std::move(action));
 }
 
diff --git a/src/importers/state_transition_importer.cpp b/src/importers/state_transition_importer.cpp
index d340460..beb6b45 100644
--- a/src/importers/state_transition_importer.cpp
+++ b/src/importers/state_transition_importer.cpp
@@ -5,8 +5,10 @@
 using namespace rive;
 
 StateTransitionImporter::StateTransitionImporter(StateTransition* transition) :
-    m_Transition(transition) {}
-void StateTransitionImporter::addCondition(TransitionCondition* condition) {
+    m_Transition(transition)
+{}
+void StateTransitionImporter::addCondition(TransitionCondition* condition)
+{
     m_Transition->addCondition(condition);
 }
 
diff --git a/src/math/aabb.cpp b/src/math/aabb.cpp
index 50a9797..65cb3e8 100644
--- a/src/math/aabb.cpp
+++ b/src/math/aabb.cpp
@@ -4,15 +4,18 @@
 
 using namespace rive;
 
-AABB::AABB(Span<Vec2D> pts) {
-    if (pts.size() == 0) {
+AABB::AABB(Span<Vec2D> pts)
+{
+    if (pts.size() == 0)
+    {
         minX = minY = maxX = maxY = 0;
         return;
     }
 
     float L = pts[0].x, R = L, T = pts[0].y, B = T;
 
-    for (size_t i = 1; i < pts.size(); ++i) {
+    for (size_t i = 1; i < pts.size(); ++i)
+    {
         L = std::min(L, pts[i].x);
         R = std::max(R, pts[i].x);
         T = std::min(T, pts[i].y);
@@ -28,7 +31,8 @@
 
 static inline int graphics_round(float x) { return (int)graphics_roundf(x); }
 
-IAABB AABB::round() const {
+IAABB AABB::round() const
+{
     return {
         graphics_round(left()),
         graphics_round(top()),
@@ -39,22 +43,28 @@
 
 void AABB::expandTo(AABB& out, const Vec2D& point) { expandTo(out, point.x, point.y); }
 
-void AABB::expandTo(AABB& out, float x, float y) {
-    if (x < out.minX) {
+void AABB::expandTo(AABB& out, float x, float y)
+{
+    if (x < out.minX)
+    {
         out.minX = x;
     }
-    if (x > out.maxX) {
+    if (x > out.maxX)
+    {
         out.maxX = x;
     }
-    if (y < out.minY) {
+    if (y < out.minY)
+    {
         out.minY = y;
     }
-    if (y > out.maxY) {
+    if (y > out.maxY)
+    {
         out.maxY = y;
     }
 }
 
-void AABB::join(AABB& out, const AABB& a, const AABB& b) {
+void AABB::join(AABB& out, const AABB& a, const AABB& b)
+{
     out.minX = std::min(a.minX, b.minX);
     out.minY = std::min(a.minY, b.minY);
     out.maxX = std::max(a.maxX, b.maxX);
diff --git a/src/math/contour_measure.cpp b/src/math/contour_measure.cpp
index 5f4f887..5971a2d 100644
--- a/src/math/contour_measure.cpp
+++ b/src/math/contour_measure.cpp
@@ -10,7 +10,8 @@
 
 using namespace rive;
 
-enum SegmentType { // must fit in 2 bits
+enum SegmentType
+{ // must fit in 2 bits
     kLine,
     kQuad,
     kCubic,
@@ -25,11 +26,13 @@
                                std::vector<Vec2D>&& pts,
                                float length,
                                bool isClosed) :
-    m_segments(std::move(segs)), m_points(std::move(pts)), m_length(length), m_isClosed(isClosed) {}
+    m_segments(std::move(segs)), m_points(std::move(pts)), m_length(length), m_isClosed(isClosed)
+{}
 
 // Return index of the segment that contains distance,
 // or the last segment if distance == m_distance
-size_t ContourMeasure::findSegment(float distance) const {
+size_t ContourMeasure::findSegment(float distance) const
+{
     assert(m_segments.front().m_distance > 0);
     assert(m_segments.back().m_distance == m_length);
 
@@ -43,7 +46,8 @@
     return iter - m_segments.begin();
 }
 
-static ContourMeasure::PosTan eval_quad(const Vec2D pts[], float t) {
+static ContourMeasure::PosTan eval_quad(const Vec2D pts[], float t)
+{
     assert(t >= 0 && t <= 1);
 
     const EvalQuad eval(pts);
@@ -58,7 +62,8 @@
     };
 }
 
-static ContourMeasure::PosTan eval_cubic(const Vec2D pts[], float t) {
+static ContourMeasure::PosTan eval_cubic(const Vec2D pts[], float t)
+{
     assert(t >= 0 && t <= 1);
 
     const EvalCubic eval(pts);
@@ -74,12 +79,20 @@
     };
 }
 
-void ContourMeasure::Segment::extract(RawPath* dst, const Vec2D pts[]) const {
+void ContourMeasure::Segment::extract(RawPath* dst, const Vec2D pts[]) const
+{
     pts += m_ptIndex;
-    switch (m_type) {
-        case SegmentType::kLine: dst->line(pts[1]); break;
-        case SegmentType::kQuad: dst->quad(pts[1], pts[2]); break;
-        case SegmentType::kCubic: dst->cubic(pts[1], pts[2], pts[3]); break;
+    switch (m_type)
+    {
+        case SegmentType::kLine:
+            dst->line(pts[1]);
+            break;
+        case SegmentType::kQuad:
+            dst->quad(pts[1], pts[2]);
+            break;
+        case SegmentType::kCubic:
+            dst->cubic(pts[1], pts[2], pts[3]);
+            break;
     }
 }
 
@@ -87,29 +100,34 @@
                                       float fromT,
                                       float toT,
                                       const Vec2D pts[],
-                                      bool moveTo) const {
+                                      bool moveTo) const
+{
     assert(fromT <= toT);
     pts += m_ptIndex;
 
     Vec2D tmp[4];
-    switch (m_type) {
+    switch (m_type)
+    {
         case SegmentType::kLine:
             line_extract(pts, fromT, toT, tmp);
-            if (moveTo) {
+            if (moveTo)
+            {
                 dst->move(tmp[0]);
             }
             dst->line(tmp[1]);
             break;
         case SegmentType::kQuad:
             quad_extract(pts, fromT, toT, tmp);
-            if (moveTo) {
+            if (moveTo)
+            {
                 dst->move(tmp[0]);
             }
             dst->quad(tmp[1], tmp[2]);
             break;
         case SegmentType::kCubic:
             cubic_extract(pts, fromT, toT, tmp);
-            if (moveTo) {
+            if (moveTo)
+            {
                 dst->move(tmp[0]);
             }
             dst->cubic(tmp[1], tmp[2], tmp[3]);
@@ -117,15 +135,18 @@
     }
 }
 
-ContourMeasure::PosTan ContourMeasure::getPosTan(float distance) const {
+ContourMeasure::PosTan ContourMeasure::getPosTan(float distance) const
+{
     // specal-case end of the contour
-    if (distance >= m_length) {
+    if (distance >= m_length)
+    {
         size_t N = m_points.size();
         assert(N > 1);
         return {m_points[N - 1], (m_points[N - 1] - m_points[N - 2]).normalized()};
     }
 
-    if (distance < 0) {
+    if (distance < 0)
+    {
         distance = 0;
     }
 
@@ -142,7 +163,8 @@
     const float relD = (distance - prevD) / (currD - prevD);
     assert(relD >= 0 && relD <= 1);
 
-    if (seg.m_type == SegmentType::kLine) {
+    if (seg.m_type == SegmentType::kLine)
+    {
         assert(seg.m_ptIndex + 1 < m_points.size());
         auto p0 = m_points[seg.m_ptIndex + 0];
         auto p1 = m_points[seg.m_ptIndex + 1];
@@ -153,9 +175,11 @@
     }
 
     float prevT = 0;
-    if (i > 0) {
+    if (i > 0)
+    {
         auto prev = m_segments[i - 1];
-        if (prev.m_ptIndex == seg.m_ptIndex) {
+        if (prev.m_ptIndex == seg.m_ptIndex)
+        {
             prevT = prev.getT();
         }
     }
@@ -163,34 +187,42 @@
     const float t = lerp(prevT, seg.getT(), relD);
     assert(t >= 0 && t <= 1);
 
-    if (seg.m_type == SegmentType::kQuad) {
+    if (seg.m_type == SegmentType::kQuad)
+    {
         assert(seg.m_ptIndex + 2 < m_points.size());
         return eval_quad(&m_points[seg.m_ptIndex], t);
-    } else {
+    }
+    else
+    {
         assert(seg.m_type == SegmentType::kCubic);
         assert(seg.m_ptIndex + 3 < m_points.size());
         return eval_cubic(&m_points[seg.m_ptIndex], t);
     }
 }
 
-static const ContourMeasure::Segment* next_segment_beginning(const ContourMeasure::Segment* seg) {
+static const ContourMeasure::Segment* next_segment_beginning(const ContourMeasure::Segment* seg)
+{
     auto startingPtIndex = seg->m_ptIndex;
-    do {
+    do
+    {
         seg += 1;
     } while (seg->m_ptIndex == startingPtIndex);
     return seg;
 }
 
 // Compute the (interpolated) t for a distance within the index'th segment
-static float compute_t(Span<const ContourMeasure::Segment> segs, size_t index, float distance) {
+static float compute_t(Span<const ContourMeasure::Segment> segs, size_t index, float distance)
+{
     const auto seg = segs[index];
     assert(distance <= seg.m_distance);
 
     float prevDist = 0, prevT = 0;
-    if (index > 0) {
+    if (index > 0)
+    {
         const auto prev = segs[index - 1];
         prevDist = prev.m_distance;
-        if (prev.m_ptIndex == seg.m_ptIndex) {
+        if (prev.m_ptIndex == seg.m_ptIndex)
+        {
             prevT = prev.getT();
         }
     }
@@ -203,11 +235,13 @@
 void ContourMeasure::getSegment(float startDist,
                                 float endDist,
                                 RawPath* dst,
-                                bool startWithMove) const {
+                                bool startWithMove) const
+{
     // sanitize the inputs
     startDist = std::max(0.f, startDist);
     endDist = std::min(m_length, endDist);
-    if (startDist >= endDist) {
+    if (startDist >= endDist)
+    {
         return;
     }
 
@@ -220,14 +254,18 @@
     const auto startT = compute_t(m_segments, startIndex, startDist);
     const auto endT = compute_t(m_segments, endIndex, endDist);
 
-    if (start.m_ptIndex == end.m_ptIndex) {
+    if (start.m_ptIndex == end.m_ptIndex)
+    {
         start.extract(dst, startT, endT, m_points.data(), startWithMove);
-    } else {
+    }
+    else
+    {
         start.extract(dst, startT, 1, m_points.data(), startWithMove);
 
         // now scoop up all the segments after start, and before end
         const auto* seg = next_segment_beginning(&m_segments[startIndex]);
-        while (seg->m_ptIndex != end.m_ptIndex) {
+        while (seg->m_ptIndex != end.m_ptIndex)
+        {
             seg->extract(dst, m_points.data());
             seg = next_segment_beginning(seg);
         }
@@ -237,9 +275,11 @@
     }
 }
 
-void ContourMeasure::dump() const {
+void ContourMeasure::dump() const
+{
     printf("length %g pts %zu segs %zu\n", m_length, m_points.size(), m_segments.size());
-    for (const auto& s : m_segments) {
+    for (const auto& s : m_segments)
+    {
         printf(" %g %d %g %d\n", s.m_distance, s.m_ptIndex, s.getT(), s.m_type);
     }
 }
@@ -248,18 +288,22 @@
 
 constexpr auto kMaxDot30 = ContourMeasure::kMaxDot30;
 
-static inline unsigned toDot30(float x) {
+static inline unsigned toDot30(float x)
+{
     assert(x >= 0 && x < 1);
     return (unsigned)(x * (1 << 30));
 }
 
 static void addSeg(std::vector<ContourMeasure::Segment>& array,
                    const ContourMeasure::Segment& seg,
-                   bool required = false) {
-    if (array.size() > 0) {
+                   bool required = false)
+{
+    if (array.size() > 0)
+    {
         const auto& last = array.back();
         assert(last.m_distance <= seg.m_distance);
-        if (last.m_distance == seg.m_distance) {
+        if (last.m_distance == seg.m_distance)
+        {
             assert(!required);
             return;
         }
@@ -274,14 +318,16 @@
 float ContourMeasureIter::addQuadSegs(std::vector<ContourMeasure::Segment>& segs,
                                       const Vec2D pts[],
                                       uint32_t ptIndex,
-                                      float distance) const {
+                                      float distance) const
+{
     const int count = computeApproximatingQuadLineSegments(pts, m_invTolerance);
     const float dt = 1.0f / count;
     const EvalQuad eval(pts);
 
     float t = dt;
     Vec2D prev = pts[0];
-    for (int i = 1; i < count; ++i) {
+    for (int i = 1; i < count; ++i)
+    {
         auto next = eval(t);
         distance += (next - prev).length();
         addSeg(segs, {distance, ptIndex, toDot30(t), SegmentType::kQuad});
@@ -296,14 +342,16 @@
 float ContourMeasureIter::addCubicSegs(std::vector<ContourMeasure::Segment>& segs,
                                        const Vec2D pts[],
                                        uint32_t ptIndex,
-                                       float distance) const {
+                                       float distance) const
+{
     const int count = computeApproximatingCubicLineSegments(pts, m_invTolerance);
     const float dt = 1.0f / count;
     const EvalCubic eval(pts);
 
     float t = dt;
     Vec2D prev = pts[0];
-    for (int i = 1; i < count; ++i) {
+    for (int i = 1; i < count; ++i)
+    {
         auto next = eval(t);
         distance += (next - prev).length();
         addSeg(segs, {distance, ptIndex, toDot30(t), SegmentType::kCubic});
@@ -315,7 +363,8 @@
     return distance;
 }
 
-void ContourMeasureIter::reset(const RawPath& path, float tolerance) {
+void ContourMeasureIter::reset(const RawPath& path, float tolerance)
+{
     m_iter = path.begin();
     m_end = path.end();
     m_srcPoints = path.points().data();
@@ -327,16 +376,20 @@
 // Can return null if either it encountered an empty contour (length == 0)
 // or the iterator is exhausted.
 //
-rcp<ContourMeasure> ContourMeasureIter::tryNext() {
+rcp<ContourMeasure> ContourMeasureIter::tryNext()
+{
     std::vector<ContourMeasure::Segment> segs;
     std::vector<Vec2D> pts;
     float distance = 0;
     bool isClosed = false;
 
-    for (; m_iter != m_end; ++m_iter) {
+    for (; m_iter != m_end; ++m_iter)
+    {
         auto [verb, iterPts] = *m_iter;
-        if (verb == PathVerb::move) {
-            if (!pts.empty()) {
+        if (verb == PathVerb::move)
+        {
+            if (!pts.empty())
+            {
                 break; // We've alredy seen a move. Save this one for next time.
             }
             pts.push_back(iterPts[0]);
@@ -346,56 +399,69 @@
         assert(!isClosed);    // PathVerb::close is always followed by a move or nothing.
         float prevDistance = distance;
         const uint32_t ptIndex = castTo<uint32_t>(pts.size() - 1);
-        switch (verb) {
+        switch (verb)
+        {
             case PathVerb::line:
                 distance += (iterPts[1] - iterPts[0]).length();
-                if (distance > prevDistance) {
+                if (distance > prevDistance)
+                {
                     addSeg(segs, {distance, ptIndex, kMaxDot30, SegmentType::kLine}, true);
                     pts.push_back(iterPts[1]);
                 }
                 break;
             case PathVerb::quad:
                 distance = this->addQuadSegs(segs, iterPts, ptIndex, distance);
-                if (distance > prevDistance) {
+                if (distance > prevDistance)
+                {
                     pts.push_back(iterPts[1]);
                     pts.push_back(iterPts[2]);
                 }
                 break;
             case PathVerb::cubic:
                 distance = this->addCubicSegs(segs, iterPts, ptIndex, distance);
-                if (distance > prevDistance) {
+                if (distance > prevDistance)
+                {
                     pts.push_back(iterPts[1]);
                     pts.push_back(iterPts[2]);
                     pts.push_back(iterPts[3]);
                 }
                 break;
-            case PathVerb::close: {
+            case PathVerb::close:
+            {
                 auto first = pts.front();
                 distance += (first - iterPts[0]).length();
-                if (distance > prevDistance) {
+                if (distance > prevDistance)
+                {
                     addSeg(segs, {distance, ptIndex, kMaxDot30, SegmentType::kLine}, true);
                     pts.push_back(first);
                 }
                 isClosed = true;
-            } break;
-            case PathVerb::move: RIVE_UNREACHABLE; // Handled above.
+            }
+            break;
+            case PathVerb::move:
+                RIVE_UNREACHABLE; // Handled above.
         }
     }
 
-    if (distance == 0 || pts.size() < 2) {
+    if (distance == 0 || pts.size() < 2)
+    {
         return nullptr;
     }
     return rcp<ContourMeasure>(
         new ContourMeasure(std::move(segs), std::move(pts), distance, isClosed));
 }
 
-rcp<ContourMeasure> ContourMeasureIter::next() {
+rcp<ContourMeasure> ContourMeasureIter::next()
+{
     rcp<ContourMeasure> cm;
-    for (;;) {
-        if ((cm = this->tryNext())) {
+    for (;;)
+    {
+        if ((cm = this->tryNext()))
+        {
             break;
         }
-        if (m_iter == m_end) {
+        if (m_iter == m_end)
+        {
             break;
         }
     }
diff --git a/src/math/hit_test.cpp b/src/math/hit_test.cpp
index 8dc2fa6..b803242 100644
--- a/src/math/hit_test.cpp
+++ b/src/math/hit_test.cpp
@@ -17,7 +17,8 @@
 
 static inline int graphics_round(float x) { return (int)graphics_roundf(x); }
 
-struct Point {
+struct Point
+{
     float x, y;
 
     Point() {}
@@ -27,11 +28,13 @@
     Point operator+(Point v) const { return {x + v.x, y + v.y}; }
     Point operator-(Point v) const { return {x - v.x, y - v.y}; }
 
-    Point& operator+=(Point v) {
+    Point& operator+=(Point v)
+    {
         *this = *this + v;
         return *this;
     }
-    Point& operator-=(Point v) {
+    Point& operator-=(Point v)
+    {
         *this = *this - v;
         return *this;
     }
@@ -45,12 +48,14 @@
 template <typename T> T ave(T a, T b) { return lerp(a, b, 0.5f); }
 
 static void
-append_line(const float height, Point p0, Point p1, float m, int winding, int delta[], int iwidth) {
+append_line(const float height, Point p0, Point p1, float m, int winding, int delta[], int iwidth)
+{
     assert(winding == 1 || winding == -1);
 
     int top = graphics_round(p0.y);
     int bottom = graphics_round(p1.y);
-    if (top == bottom) {
+    if (top == bottom)
+    {
         return;
     }
 
@@ -62,9 +67,11 @@
     float x = p0.x + m * (top - p0.y + 0.5f) + 0.5f;
 
     int* row = delta + top * iwidth;
-    for (int y = top; y < bottom; ++y) {
+    for (int y = top; y < bottom; ++y)
+    {
         int ix = (int)std::max(x, 0.0f);
-        if (ix < iwidth) {
+        if (ix < iwidth)
+        {
             row[ix] += winding;
         }
         x += m;
@@ -72,27 +79,33 @@
     }
 }
 
-static void clip_line(const float height, Point p0, Point p1, int delta[], const int iwidth) {
-    if (p0.y == p1.y) {
+static void clip_line(const float height, Point p0, Point p1, int delta[], const int iwidth)
+{
+    if (p0.y == p1.y)
+    {
         return;
     }
 
     int winding = 1;
-    if (p0.y > p1.y) {
+    if (p0.y > p1.y)
+    {
         winding = -1;
         std::swap(p0, p1);
     }
     // now we're monotonic in Y: p0 <= p1
-    if (p1.y <= 0 || p0.y >= height) {
+    if (p1.y <= 0 || p0.y >= height)
+    {
         return;
     }
 
     const float m = (float)(p1.x - p0.x) / (p1.y - p0.y);
-    if (p0.y < 0) {
+    if (p0.y < 0)
+    {
         p0.x += m * (0 - p0.y);
         p0.y = 0;
     }
-    if (p1.y > height) {
+    if (p1.y > height)
+    {
         p1.x += m * (height - p1.y);
         p1.y = height;
     }
@@ -106,7 +119,8 @@
 
 #define MAX_CURVE_SEGMENTS (1 << 8)
 
-static int compute_cubic_segments(Point a, Point b, Point c, Point d) {
+static int compute_cubic_segments(Point a, Point b, Point c, Point d)
+{
     Point abc = a - b - b + c;
     Point bcd = b - c - c + d;
     float dx = std::max(std::abs(abc.x), std::abs(bcd.x));
@@ -123,7 +137,8 @@
 // becomes
 // At^3 + Bt^2 + Ct + D
 //
-struct CubicCoeff {
+struct CubicCoeff
+{
     Point A, B, C, D;
 
     // a(1-t)^3 + 3bt(1-t)^2 + 3ct^2(1-t) + dt^3
@@ -134,7 +149,8 @@
     // ...
     // D  + Ct  + Bt^2  + At^3
     //
-    CubicCoeff(Point a, Point b, Point c, Point d) {
+    CubicCoeff(Point a, Point b, Point c, Point d)
+    {
         A = (d - a) + 3.0f * (b - c);
         B = 3.0f * ((c - b) + (a - b));
         C = 3.0f * (b - a);
@@ -148,29 +164,34 @@
 
 void HitTester::reset() { m_DW.clear(); }
 
-void HitTester::reset(const IAABB& clip) {
+void HitTester::reset(const IAABB& clip)
+{
     m_offset = Vec2D{(float)clip.left, (float)clip.top};
     m_height = (float)clip.height();
 
     m_IWidth = clip.width();
     m_IHeight = clip.height();
     m_DW.resize(m_IWidth * m_IHeight);
-    for (size_t i = 0; i < m_DW.size(); ++i) {
+    for (size_t i = 0; i < m_DW.size(); ++i)
+    {
         m_DW[i] = 0;
     }
 
     m_ExpectsMove = true;
 }
 
-void HitTester::move(Vec2D v) {
-    if (!m_ExpectsMove) {
+void HitTester::move(Vec2D v)
+{
+    if (!m_ExpectsMove)
+    {
         this->close();
     }
     m_First = m_Prev = v - m_offset;
     m_ExpectsMove = false;
 }
 
-void HitTester::line(Vec2D v) {
+void HitTester::line(Vec2D v)
+{
     assert(!m_ExpectsMove);
 
     v = v - m_offset;
@@ -178,22 +199,26 @@
     m_Prev = v;
 }
 
-void HitTester::quad(Vec2D b, Vec2D c) {
+void HitTester::quad(Vec2D b, Vec2D c)
+{
     assert(!m_ExpectsMove);
 
     m_Prev = c;
 }
 
-static bool quickRejectCubic(float height, Point a, Point b, Point c, Point d) {
+static bool quickRejectCubic(float height, Point a, Point b, Point c, Point d)
+{
     const float h = height;
     return (a.y <= 0 && b.y <= 0 && c.y <= 0 && d.y <= 0) ||
            (a.y >= h && b.y >= h && c.y >= h && d.y >= h);
 }
 
-struct CubicChop {
+struct CubicChop
+{
     Vec2D storage[7];
 
-    CubicChop(Vec2D a, Vec2D b, Vec2D c, Vec2D d) {
+    CubicChop(Vec2D a, Vec2D b, Vec2D c, Vec2D d)
+    {
         auto ab = ave(a, b);
         auto bc = ave(b, c);
         auto cd = ave(c, d);
@@ -209,7 +234,8 @@
         storage[6] = d;
     }
 
-    Vec2D operator[](unsigned index) const {
+    Vec2D operator[](unsigned index) const
+    {
         assert(index < 7);
         return storage[index];
     }
@@ -226,26 +252,32 @@
 //
 #define MAX_LOCAL_SEGMENTS 16
 
-void HitTester::recurse_cubic(Vec2D b, Vec2D c, Vec2D d, int count) {
-    if (quickRejectCubic(m_height, m_Prev, b, c, d)) {
+void HitTester::recurse_cubic(Vec2D b, Vec2D c, Vec2D d, int count)
+{
+    if (quickRejectCubic(m_height, m_Prev, b, c, d))
+    {
         m_Prev = d;
         return;
     }
 
-    if (count > MAX_LOCAL_SEGMENTS) {
+    if (count > MAX_LOCAL_SEGMENTS)
+    {
         CubicChop chop(m_Prev, b, c, d);
         const int newCount = (count + 1) >> 1;
         assert(newCount < count);
         this->recurse_cubic(chop[1], chop[2], chop[3], newCount);
         this->recurse_cubic(chop[4], chop[5], chop[6], newCount);
-    } else {
+    }
+    else
+    {
         const float dt = 1.0f / (float)count;
         float t = dt;
 
         CubicCoeff cube(m_Prev, b, c, d);
         // we don't need the first point eval(0) or the last eval(1)
         Point prev = m_Prev;
-        for (int i = 1; i < count - 1; ++i) {
+        for (int i = 1; i < count - 1; ++i)
+        {
             auto next = cube.eval(t);
             clip_line(m_height, prev, next, m_DW.data(), m_IWidth);
             prev = next;
@@ -255,14 +287,16 @@
         m_Prev = d;
     }
 }
-void HitTester::cubic(Vec2D b, Vec2D c, Vec2D d) {
+void HitTester::cubic(Vec2D b, Vec2D c, Vec2D d)
+{
     assert(!m_ExpectsMove);
 
     b = b - m_offset;
     c = c - m_offset;
     d = d - m_offset;
 
-    if (quickRejectCubic(m_height, m_Prev, b, c, d)) {
+    if (quickRejectCubic(m_height, m_Prev, b, c, d))
+    {
         m_Prev = d;
         return;
     }
@@ -272,14 +306,16 @@
     this->recurse_cubic(b, c, d, count);
 }
 
-void HitTester::close() {
+void HitTester::close()
+{
     assert(!m_ExpectsMove);
 
     clip_line(m_height, m_Prev, m_First, m_DW.data(), m_IWidth);
     m_ExpectsMove = true;
 }
 
-void HitTester::addRect(const AABB& rect, const Mat2D& xform, PathDirection dir) {
+void HitTester::addRect(const AABB& rect, const Mat2D& xform, PathDirection dir)
+{
     const Vec2D pts[] = {
         xform * Vec2D{rect.left(), rect.top()},
         xform * Vec2D{rect.right(), rect.top()},
@@ -288,11 +324,14 @@
     };
 
     move(pts[0]);
-    if (dir == PathDirection::clockwise) {
+    if (dir == PathDirection::clockwise)
+    {
         line(pts[1]);
         line(pts[2]);
         line(pts[3]);
-    } else {
+    }
+    else
+    {
         line(pts[3]);
         line(pts[2]);
         line(pts[1]);
@@ -300,15 +339,18 @@
     close();
 }
 
-bool HitTester::test(FillRule rule) {
-    if (!m_ExpectsMove) {
+bool HitTester::test(FillRule rule)
+{
+    if (!m_ExpectsMove)
+    {
         this->close();
     }
 
     const int mask = (rule == rive::FillRule::nonZero) ? -1 : 1;
 
     int nonzero = 0;
-    for (auto m : m_DW) {
+    for (auto m : m_DW)
+    {
         nonzero |= (m & mask);
     }
     return nonzero != 0;
@@ -318,23 +360,28 @@
 
 static bool cross_lt(Vec2D a, Vec2D b) { return a.x * b.y < a.y * b.x; }
 
-bool HitTester::testMesh(Vec2D pt, Span<Vec2D> verts, Span<uint16_t> indices) {
-    if (verts.size() < 3) {
+bool HitTester::testMesh(Vec2D pt, Span<Vec2D> verts, Span<uint16_t> indices)
+{
+    if (verts.size() < 3)
+    {
         return false;
     }
 
     // Test against the bounds of the entire mesh
     // Make this optional?
-    if (CULL_BOUNDS) {
+    if (CULL_BOUNDS)
+    {
         const auto bounds = AABB(verts);
 
         if (bounds.bottom() < pt.y || pt.y < bounds.top() || bounds.right() < pt.x ||
-            pt.x < bounds.left()) {
+            pt.x < bounds.left())
+        {
             return false;
         }
     }
 
-    for (size_t i = 0; i < indices.size(); i += 3) {
+    for (size_t i = 0; i < indices.size(); i += 3)
+    {
         const auto a = verts[indices[i + 0]];
         const auto b = verts[indices[i + 1]];
         const auto c = verts[indices[i + 2]];
@@ -347,27 +394,32 @@
         auto bc = cross_lt(pb, pc);
         auto ca = cross_lt(pc, pa);
 
-        if (ab == bc && ab == ca) {
+        if (ab == bc && ab == ca)
+        {
             return true;
         }
     }
     return false;
 }
 
-bool HitTester::testMesh(const IAABB& area, Span<Vec2D> verts, Span<uint16_t> indices) {
+bool HitTester::testMesh(const IAABB& area, Span<Vec2D> verts, Span<uint16_t> indices)
+{
     // this version can give slightly different results, so perhaps we should do this
     // automatically, ... its just much faster if we do.
-    if (area.width() * area.height() == 1) {
+    if (area.width() * area.height() == 1)
+    {
         return testMesh(Vec2D((float)area.left, (float)area.top), verts, indices);
     }
 
-    if (verts.size() < 3) {
+    if (verts.size() < 3)
+    {
         return false;
     }
 
     // Test against the bounds of the entire mesh
     // Make this optional?
-    if (CULL_BOUNDS) {
+    if (CULL_BOUNDS)
+    {
         const auto bounds = AABB(verts);
 
         if (bounds.bottom() <= area.top || area.bottom <= bounds.top() ||
@@ -381,7 +433,8 @@
     const auto offset = Vec2D((float)area.left, (float)area.top);
     int* deltas = windings.data();
 
-    for (size_t i = 0; i < indices.size(); i += 3) {
+    for (size_t i = 0; i < indices.size(); i += 3)
+    {
         const auto a = verts[indices[i + 0]] - offset;
         const auto b = verts[indices[i + 1]] - offset;
         const auto c = verts[indices[i + 2]] - offset;
@@ -391,10 +444,12 @@
         clip_line((float)area.height(), c, a, deltas, area.width());
 
         int nonzero = 0;
-        for (auto w : windings) {
+        for (auto w : windings)
+        {
             nonzero |= w;
         }
-        if (nonzero) {
+        if (nonzero)
+        {
             return true;
         }
     }
diff --git a/src/math/mat2d.cpp b/src/math/mat2d.cpp
index 395dd7f..a623ae7 100644
--- a/src/math/mat2d.cpp
+++ b/src/math/mat2d.cpp
@@ -5,16 +5,19 @@
 
 using namespace rive;
 
-Mat2D Mat2D::fromRotation(float rad) {
+Mat2D Mat2D::fromRotation(float rad)
+{
     float s = 0, c = 1;
-    if (rad != 0) {
+    if (rad != 0)
+    {
         s = sin(rad);
         c = cos(rad);
     }
     return {c, s, -s, c, 0, 0};
 }
 
-Mat2D Mat2D::scale(Vec2D vec) const {
+Mat2D Mat2D::scale(Vec2D vec) const
+{
     return {
         m_Buffer[0] * vec.x,
         m_Buffer[1] * vec.x,
@@ -25,7 +28,8 @@
     };
 }
 
-Mat2D Mat2D::multiply(const Mat2D& a, const Mat2D& b) {
+Mat2D Mat2D::multiply(const Mat2D& a, const Mat2D& b)
+{
     float a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], b0 = b[0], b1 = b[1],
           b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];
     return {
@@ -38,12 +42,14 @@
     };
 }
 
-bool Mat2D::invert(Mat2D* result) const {
+bool Mat2D::invert(Mat2D* result) const
+{
     float aa = m_Buffer[0], ab = m_Buffer[1], ac = m_Buffer[2], ad = m_Buffer[3], atx = m_Buffer[4],
           aty = m_Buffer[5];
 
     float det = aa * ad - ab * ac;
-    if (det == 0.0f) {
+    if (det == 0.0f)
+    {
         return false;
     }
     det = 1.0f / det;
@@ -59,7 +65,8 @@
     return true;
 }
 
-TransformComponents Mat2D::decompose() const {
+TransformComponents Mat2D::decompose() const
+{
     float m0 = m_Buffer[0], m1 = m_Buffer[1], m2 = m_Buffer[2], m3 = m_Buffer[3];
 
     float rotation = (float)std::atan2(m1, m0);
@@ -78,21 +85,24 @@
     return result;
 }
 
-Mat2D Mat2D::compose(const TransformComponents& components) {
+Mat2D Mat2D::compose(const TransformComponents& components)
+{
     auto result = Mat2D::fromRotation(components.rotation());
     result[4] = components.x();
     result[5] = components.y();
     result = result.scale(components.scale());
 
     float sk = components.skew();
-    if (sk != 0.0f) {
+    if (sk != 0.0f)
+    {
         result[2] = result[0] * sk + result[2];
         result[3] = result[1] * sk + result[3];
     }
     return result;
 }
 
-void Mat2D::scaleByValues(float sx, float sy) {
+void Mat2D::scaleByValues(float sx, float sy)
+{
     m_Buffer[0] *= sx;
     m_Buffer[1] *= sx;
     m_Buffer[2] *= sy;
diff --git a/src/math/raw_path.cpp b/src/math/raw_path.cpp
index 1fa9381..8ac9bde 100644
--- a/src/math/raw_path.cpp
+++ b/src/math/raw_path.cpp
@@ -10,23 +10,30 @@
 #include <cstring>
 #include <algorithm>
 
-namespace rive {
+namespace rive
+{
 
-bool RawPath::operator==(const RawPath& o) const {
+bool RawPath::operator==(const RawPath& o) const
+{
     return m_Points == o.m_Points && m_Verbs == o.m_Verbs;
 }
 
-AABB RawPath::bounds() const {
+AABB RawPath::bounds() const
+{
     float4 mins, maxes;
     size_t i;
-    if (m_Points.size() & 1) {
+    if (m_Points.size() & 1)
+    {
         mins = maxes = simd::load2f(&m_Points[0].x).xyxy;
         i = 1;
-    } else {
+    }
+    else
+    {
         mins = maxes = m_Points.empty() ? float4{0, 0, 0, 0} : simd::load4f(&m_Points[0].x);
         i = 2;
     }
-    for (; i < m_Points.size(); i += 2) {
+    for (; i < m_Points.size(); i += 2)
+    {
         float4 pts = simd::load4f(&m_Points[i].x);
         mins = simd::min(mins, pts);
         maxes = simd::max(maxes, pts);
@@ -37,33 +44,39 @@
     return bounds;
 }
 
-void RawPath::injectImplicitMoveIfNeeded() {
-    if (!m_contourIsOpen) {
+void RawPath::injectImplicitMoveIfNeeded()
+{
+    if (!m_contourIsOpen)
+    {
         move(m_Points.empty() ? Vec2D{0, 0} : m_Points[m_lastMoveIdx]);
     }
 }
 
-void RawPath::move(Vec2D a) {
+void RawPath::move(Vec2D a)
+{
     m_contourIsOpen = true;
     m_lastMoveIdx = m_Points.size();
     m_Points.push_back(a);
     m_Verbs.push_back(PathVerb::move);
 }
 
-void RawPath::line(Vec2D a) {
+void RawPath::line(Vec2D a)
+{
     injectImplicitMoveIfNeeded();
     m_Points.push_back(a);
     m_Verbs.push_back(PathVerb::line);
 }
 
-void RawPath::quad(Vec2D a, Vec2D b) {
+void RawPath::quad(Vec2D a, Vec2D b)
+{
     injectImplicitMoveIfNeeded();
     m_Points.push_back(a);
     m_Points.push_back(b);
     m_Verbs.push_back(PathVerb::quad);
 }
 
-void RawPath::cubic(Vec2D a, Vec2D b, Vec2D c) {
+void RawPath::cubic(Vec2D a, Vec2D b, Vec2D c)
+{
     injectImplicitMoveIfNeeded();
     m_Points.push_back(a);
     m_Points.push_back(b);
@@ -71,32 +84,39 @@
     m_Verbs.push_back(PathVerb::cubic);
 }
 
-void RawPath::close() {
-    if (m_contourIsOpen) {
+void RawPath::close()
+{
+    if (m_contourIsOpen)
+    {
         m_Verbs.push_back(PathVerb::close);
         m_contourIsOpen = false;
     }
 }
 
-RawPath RawPath::transform(const Mat2D& m) const {
+RawPath RawPath::transform(const Mat2D& m) const
+{
     RawPath path;
 
     path.m_Verbs = m_Verbs;
 
     path.m_Points.resize(m_Points.size());
-    for (size_t i = 0; i < m_Points.size(); ++i) {
+    for (size_t i = 0; i < m_Points.size(); ++i)
+    {
         path.m_Points[i] = m * m_Points[i];
     }
     return path;
 }
 
-void RawPath::transformInPlace(const Mat2D& m) {
-    for (auto& p : m_Points) {
+void RawPath::transformInPlace(const Mat2D& m)
+{
+    for (auto& p : m_Points)
+    {
         p = m * p;
     }
 }
 
-void RawPath::addRect(const AABB& r, PathDirection dir) {
+void RawPath::addRect(const AABB& r, PathDirection dir)
+{
     // We manually close the rectangle, in case we want to stroke
     // this path. We also call close() so we get proper joins
     // (and not caps).
@@ -105,11 +125,14 @@
     m_Verbs.reserve(6);
 
     moveTo(r.left(), r.top());
-    if (dir == PathDirection::clockwise) {
+    if (dir == PathDirection::clockwise)
+    {
         lineTo(r.right(), r.top());
         lineTo(r.right(), r.bottom());
         lineTo(r.left(), r.bottom());
-    } else {
+    }
+    else
+    {
         lineTo(r.left(), r.bottom());
         lineTo(r.right(), r.bottom());
         lineTo(r.right(), r.top());
@@ -117,7 +140,8 @@
     close();
 }
 
-void RawPath::addOval(const AABB& r, PathDirection dir) {
+void RawPath::addOval(const AABB& r, PathDirection dir)
+{
     // see https://spencermortensen.com/articles/bezier-circle/
     constexpr float C = 0.5519150244935105707435627f;
     // precompute clockwise unit circle, starting and ending at {1, 0}
@@ -150,22 +174,29 @@
     m_Points.reserve(13);
     m_Verbs.reserve(6);
 
-    if (dir == PathDirection::clockwise) {
+    if (dir == PathDirection::clockwise)
+    {
         move(map(unit[0]));
-        for (int i = 1; i <= 12; i += 3) {
+        for (int i = 1; i <= 12; i += 3)
+        {
             cubic(map(unit[i + 0]), map(unit[i + 1]), map(unit[i + 2]));
         }
-    } else {
+    }
+    else
+    {
         move(map(unit[12]));
-        for (int i = 11; i >= 0; i -= 3) {
+        for (int i = 11; i >= 0; i -= 3)
+        {
             cubic(map(unit[i - 0]), map(unit[i - 1]), map(unit[i - 2]));
         }
     }
     close();
 }
 
-void RawPath::addPoly(Span<const Vec2D> span, bool isClosed) {
-    if (span.size() == 0) {
+void RawPath::addPoly(Span<const Vec2D> span, bool isClosed)
+{
+    if (span.size() == 0)
+    {
         return;
     }
 
@@ -175,32 +206,40 @@
     m_Verbs.reserve(span.size() + isClosed);
 
     move(span[0]);
-    for (size_t i = 1; i < span.size(); ++i) {
+    for (size_t i = 1; i < span.size(); ++i)
+    {
         line(span[i]);
     }
-    if (isClosed) {
+    if (isClosed)
+    {
         close();
     }
 }
 
-void RawPath::addPath(const RawPath& src, const Mat2D* mat) {
+void RawPath::addPath(const RawPath& src, const Mat2D* mat)
+{
     m_Verbs.insert(m_Verbs.end(), src.m_Verbs.cbegin(), src.m_Verbs.cend());
 
-    if (mat) {
+    if (mat)
+    {
         const auto oldPointCount = m_Points.size();
         m_Points.resize(oldPointCount + src.m_Points.size());
         Vec2D* dst = m_Points.data() + oldPointCount;
-        for (auto i = 0; i < src.m_Points.size(); ++i) {
+        for (auto i = 0; i < src.m_Points.size(); ++i)
+        {
             dst[i] = *mat * src.m_Points[i];
         }
-    } else {
+    }
+    else
+    {
         m_Points.insert(m_Points.end(), src.m_Points.cbegin(), src.m_Points.cend());
     }
 }
 
 //////////////////////////////////////////////////////////////////////////
 
-int path_verb_to_point_count(PathVerb v) {
+int path_verb_to_point_count(PathVerb v)
+{
     static uint8_t ptCounts[] = {
         1, // move
         1, // line
@@ -214,12 +253,14 @@
     return ptCounts[index];
 }
 
-void RawPath::swap(RawPath& rawPath) {
+void RawPath::swap(RawPath& rawPath)
+{
     m_Points.swap(rawPath.m_Points);
     m_Verbs.swap(rawPath.m_Verbs);
 }
 
-void RawPath::reset() {
+void RawPath::reset()
+{
     m_Points.clear();
     m_Points.shrink_to_fit();
     m_Verbs.clear();
@@ -227,7 +268,8 @@
     m_contourIsOpen = false;
 }
 
-void RawPath::rewind() {
+void RawPath::rewind()
+{
     m_Points.clear();
     m_Verbs.clear();
     m_contourIsOpen = false;
@@ -235,14 +277,26 @@
 
 ///////////////////////////////////
 
-void RawPath::addTo(CommandPath* result) const {
-    for (auto [verb, pts] : *this) {
-        switch (verb) {
-            case PathVerb::move: result->move(pts[0]); break;
-            case PathVerb::line: result->line(pts[1]); break;
-            case PathVerb::cubic: result->cubic(pts[1], pts[2], pts[3]); break;
-            case PathVerb::close: result->close(); break;
-            case PathVerb::quad: RIVE_UNREACHABLE;
+void RawPath::addTo(CommandPath* result) const
+{
+    for (auto [verb, pts] : *this)
+    {
+        switch (verb)
+        {
+            case PathVerb::move:
+                result->move(pts[0]);
+                break;
+            case PathVerb::line:
+                result->line(pts[1]);
+                break;
+            case PathVerb::cubic:
+                result->cubic(pts[1], pts[2], pts[3]);
+                break;
+            case PathVerb::close:
+                result->close();
+                break;
+            case PathVerb::quad:
+                RIVE_UNREACHABLE;
         }
     }
 }
diff --git a/src/math/raw_path_utils.cpp b/src/math/raw_path_utils.cpp
index 6f40268..1c457d3 100644
--- a/src/math/raw_path_utils.cpp
+++ b/src/math/raw_path_utils.cpp
@@ -14,14 +14,16 @@
 // d = |a - 2b + c|/4
 // count = sqrt(d / tol)
 //
-int rive::computeApproximatingQuadLineSegments(const rive::Vec2D pts[3], float invTolerance) {
+int rive::computeApproximatingQuadLineSegments(const rive::Vec2D pts[3], float invTolerance)
+{
     auto diff = pts[0] - rive::two(pts[1]) + pts[2];
     float d = diff.length();
     float count = sqrtf(d * invTolerance * 0.25f);
     return std::max(1, std::min((int)std::ceil(count), MAX_LINE_SEGMENTS));
 }
 
-int rive::computeApproximatingCubicLineSegments(const rive::Vec2D pts[4], float invTolerance) {
+int rive::computeApproximatingCubicLineSegments(const rive::Vec2D pts[4], float invTolerance)
+{
     auto abc = pts[0] - pts[1] - pts[1] + pts[2];
     auto bcd = pts[1] - pts[2] - pts[2] + pts[3];
     float dx = std::max(std::abs(abc.x), std::abs(bcd.x));
@@ -34,7 +36,8 @@
 
 // Extract subsets
 
-void rive::quad_subdivide(const rive::Vec2D src[3], float t, rive::Vec2D dst[5]) {
+void rive::quad_subdivide(const rive::Vec2D src[3], float t, rive::Vec2D dst[5])
+{
     assert(t >= 0 && t <= 1);
     auto ab = lerp(src[0], src[1], t);
     auto bc = lerp(src[1], src[2], t);
@@ -45,7 +48,8 @@
     dst[4] = src[2];
 }
 
-void rive::cubic_subdivide(const rive::Vec2D src[4], float t, rive::Vec2D dst[7]) {
+void rive::cubic_subdivide(const rive::Vec2D src[4], float t, rive::Vec2D dst[7])
+{
     assert(t >= 0 && t <= 1);
     auto ab = lerp(src[0], src[1], t);
     auto bc = lerp(src[1], src[2], t);
@@ -61,7 +65,8 @@
     dst[6] = src[3];
 }
 
-void rive::line_extract(const rive::Vec2D src[2], float startT, float endT, rive::Vec2D dst[2]) {
+void rive::line_extract(const rive::Vec2D src[2], float startT, float endT, rive::Vec2D dst[2])
+{
     assert(startT <= endT);
     assert(startT >= 0 && endT <= 1);
 
@@ -69,20 +74,28 @@
     dst[1] = lerp(src[0], src[1], endT);
 }
 
-void rive::quad_extract(const rive::Vec2D src[3], float startT, float endT, rive::Vec2D dst[3]) {
+void rive::quad_extract(const rive::Vec2D src[3], float startT, float endT, rive::Vec2D dst[3])
+{
     assert(startT <= endT);
     assert(startT >= 0 && endT <= 1);
 
     rive::Vec2D tmp[5];
-    if (startT == 0 && endT == 1) {
+    if (startT == 0 && endT == 1)
+    {
         std::copy(src, src + 3, dst);
-    } else if (startT == 0) {
+    }
+    else if (startT == 0)
+    {
         rive::quad_subdivide(src, endT, tmp);
         std::copy(tmp, tmp + 3, dst);
-    } else if (endT == 1) {
+    }
+    else if (endT == 1)
+    {
         rive::quad_subdivide(src, startT, tmp);
         std::copy(tmp + 2, tmp + 5, dst);
-    } else {
+    }
+    else
+    {
         assert(endT > 0);
         rive::quad_subdivide(src, endT, tmp);
         rive::Vec2D tmp2[5];
@@ -91,20 +104,28 @@
     }
 }
 
-void rive::cubic_extract(const rive::Vec2D src[4], float startT, float endT, rive::Vec2D dst[4]) {
+void rive::cubic_extract(const rive::Vec2D src[4], float startT, float endT, rive::Vec2D dst[4])
+{
     assert(startT <= endT);
     assert(startT >= 0 && endT <= 1);
 
     rive::Vec2D tmp[7];
-    if (startT == 0 && endT == 1) {
+    if (startT == 0 && endT == 1)
+    {
         std::copy(src, src + 4, dst);
-    } else if (startT == 0) {
+    }
+    else if (startT == 0)
+    {
         rive::cubic_subdivide(src, endT, tmp);
         std::copy(tmp, tmp + 4, dst);
-    } else if (endT == 1) {
+    }
+    else if (endT == 1)
+    {
         rive::cubic_subdivide(src, startT, tmp);
         std::copy(tmp + 3, tmp + 7, dst);
-    } else {
+    }
+    else
+    {
         assert(endT > 0);
         rive::cubic_subdivide(src, endT, tmp);
         rive::Vec2D tmp2[7];
diff --git a/src/math/vec2d.cpp b/src/math/vec2d.cpp
index f8b2f90..6433973 100644
--- a/src/math/vec2d.cpp
+++ b/src/math/vec2d.cpp
@@ -4,7 +4,8 @@
 
 using namespace rive;
 
-Vec2D Vec2D::transformDir(const Vec2D& a, const Mat2D& m) {
+Vec2D Vec2D::transformDir(const Vec2D& a, const Mat2D& m)
+{
     return {
         m[0] * a.x + m[2] * a.y,
         m[1] * a.x + m[3] * a.y,
@@ -12,7 +13,8 @@
 }
 float Vec2D::length() const { return std::sqrt(lengthSquared()); }
 
-Vec2D Vec2D::normalized() const {
+Vec2D Vec2D::normalized() const
+{
     auto len2 = lengthSquared();
     auto scale = len2 > 0 ? (1 / std::sqrt(len2)) : 1;
     return *this * scale;
diff --git a/src/nested_artboard.cpp b/src/nested_artboard.cpp
index f9b3834..f4ab1c3 100644
--- a/src/nested_artboard.cpp
+++ b/src/nested_artboard.cpp
@@ -12,9 +12,11 @@
 NestedArtboard::NestedArtboard() {}
 NestedArtboard::~NestedArtboard() {}
 
-Core* NestedArtboard::clone() const {
+Core* NestedArtboard::clone() const
+{
     NestedArtboard* nestedArtboard = static_cast<NestedArtboard*>(NestedArtboardBase::clone());
-    if (m_Artboard == nullptr) {
+    if (m_Artboard == nullptr)
+    {
         return nestedArtboard;
     }
     auto ni = m_Artboard->instance();
@@ -22,11 +24,13 @@
     return nestedArtboard;
 }
 
-void NestedArtboard::nest(Artboard* artboard) {
+void NestedArtboard::nest(Artboard* artboard)
+{
     assert(artboard != nullptr);
 
     m_Artboard = artboard;
-    if (!m_Artboard->isInstance()) {
+    if (!m_Artboard->isInstance())
+    {
         // We're just marking the source artboard so we can later instance from
         // it. No need to advance it or change any of its properties.
         return;
@@ -34,22 +38,27 @@
     m_Artboard->frameOrigin(false);
     m_Artboard->opacity(renderOpacity());
     m_Instance = nullptr;
-    if (artboard->isInstance()) {
+    if (artboard->isInstance())
+    {
         m_Instance.reset(static_cast<ArtboardInstance*>(artboard)); // take ownership
     }
     m_Artboard->advance(0.0f);
 }
 
-static Mat2D makeTranslate(const Artboard* artboard) {
+static Mat2D makeTranslate(const Artboard* artboard)
+{
     return Mat2D::fromTranslate(-artboard->originX() * artboard->width(),
                                 -artboard->originY() * artboard->height());
 }
 
-void NestedArtboard::draw(Renderer* renderer) {
-    if (m_Artboard == nullptr) {
+void NestedArtboard::draw(Renderer* renderer)
+{
+    if (m_Artboard == nullptr)
+    {
         return;
     }
-    if (!clip(renderer)) {
+    if (!clip(renderer))
+    {
         // We didn't clip, so make sure to save as we'll be doing some
         // transformations.
         renderer->save();
@@ -59,22 +68,27 @@
     renderer->restore();
 }
 
-Core* NestedArtboard::hitTest(HitInfo* hinfo, const Mat2D& xform) {
-    if (m_Artboard == nullptr) {
+Core* NestedArtboard::hitTest(HitInfo* hinfo, const Mat2D& xform)
+{
+    if (m_Artboard == nullptr)
+    {
         return nullptr;
     }
     hinfo->mounts.push_back(this);
     auto mx = xform * worldTransform() * makeTranslate(m_Artboard);
-    if (auto c = m_Artboard->hitTest(hinfo, &mx)) {
+    if (auto c = m_Artboard->hitTest(hinfo, &mx))
+    {
         return c;
     }
     hinfo->mounts.pop_back();
     return nullptr;
 }
 
-StatusCode NestedArtboard::import(ImportStack& importStack) {
+StatusCode NestedArtboard::import(ImportStack& importStack)
+{
     auto backboardImporter = importStack.latest<BackboardImporter>(Backboard::typeKey);
-    if (backboardImporter == nullptr) {
+    if (backboardImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     backboardImporter->addNestedArtboard(this);
@@ -82,11 +96,13 @@
     return Super::import(importStack);
 }
 
-void NestedArtboard::addNestedAnimation(NestedAnimation* nestedAnimation) {
+void NestedArtboard::addNestedAnimation(NestedAnimation* nestedAnimation)
+{
     m_NestedAnimations.push_back(nestedAnimation);
 }
 
-StatusCode NestedArtboard::onAddedClean(CoreContext* context) {
+StatusCode NestedArtboard::onAddedClean(CoreContext* context)
+{
     // N.B. The nested instance will be null here for the source artboards.
     // Instances will have a nestedInstance available. This is a good thing as
     // it ensures that we only instance animations in artboard instances. It
@@ -95,34 +111,44 @@
     // practice for any loaded Rive file.
     assert(m_Artboard == nullptr || m_Artboard == m_Instance.get());
 
-    if (m_Instance) {
-        for (auto animation : m_NestedAnimations) {
+    if (m_Instance)
+    {
+        for (auto animation : m_NestedAnimations)
+        {
             animation->initializeAnimation(m_Instance.get());
         }
     }
     return Super::onAddedClean(context);
 }
 
-bool NestedArtboard::advance(float elapsedSeconds) {
-    if (m_Artboard == nullptr) {
+bool NestedArtboard::advance(float elapsedSeconds)
+{
+    if (m_Artboard == nullptr)
+    {
         return false;
     }
-    for (auto animation : m_NestedAnimations) {
+    for (auto animation : m_NestedAnimations)
+    {
         animation->advance(elapsedSeconds);
     }
     return m_Artboard->advance(elapsedSeconds);
 }
 
-void NestedArtboard::update(ComponentDirt value) {
+void NestedArtboard::update(ComponentDirt value)
+{
     Super::update(value);
-    if (hasDirt(value, ComponentDirt::RenderOpacity) && m_Artboard != nullptr) {
+    if (hasDirt(value, ComponentDirt::RenderOpacity) && m_Artboard != nullptr)
+    {
         m_Artboard->opacity(renderOpacity());
     }
 }
 
-bool NestedArtboard::hasNestedStateMachines() const {
-    for (auto animation : m_NestedAnimations) {
-        if (animation->is<NestedStateMachine>()) {
+bool NestedArtboard::hasNestedStateMachines() const
+{
+    for (auto animation : m_NestedAnimations)
+    {
+        if (animation->is<NestedStateMachine>())
+        {
             return true;
         }
     }
@@ -131,13 +157,16 @@
 
 Span<NestedAnimation*> NestedArtboard::nestedAnimations() { return m_NestedAnimations; }
 
-bool NestedArtboard::worldToLocal(Vec2D world, Vec2D* local) {
+bool NestedArtboard::worldToLocal(Vec2D world, Vec2D* local)
+{
     assert(local != nullptr);
-    if (m_Artboard == nullptr) {
+    if (m_Artboard == nullptr)
+    {
         return false;
     }
     Mat2D toMountedArtboard;
-    if (!worldTransform().invert(&toMountedArtboard)) {
+    if (!worldTransform().invert(&toMountedArtboard))
+    {
         return false;
     }
 
diff --git a/src/renderer.cpp b/src/renderer.cpp
index 6fb5c17..ebcabb1 100644
--- a/src/renderer.cpp
+++ b/src/renderer.cpp
@@ -4,7 +4,8 @@
 
 using namespace rive;
 
-Mat2D rive::computeAlignment(Fit fit, Alignment alignment, const AABB& frame, const AABB& content) {
+Mat2D rive::computeAlignment(Fit fit, Alignment alignment, const AABB& frame, const AABB& content)
+{
     float contentWidth = content.width();
     float contentHeight = content.height();
     float x = -content.left() - contentWidth * 0.5f - (alignment.x() * contentWidth * 0.5f);
@@ -12,39 +13,47 @@
 
     float scaleX = 1.0f, scaleY = 1.0f;
 
-    switch (fit) {
-        case Fit::fill: {
+    switch (fit)
+    {
+        case Fit::fill:
+        {
             scaleX = frame.width() / contentWidth;
             scaleY = frame.height() / contentHeight;
             break;
         }
-        case Fit::contain: {
+        case Fit::contain:
+        {
             float minScale =
                 std::fmin(frame.width() / contentWidth, frame.height() / contentHeight);
             scaleX = scaleY = minScale;
             break;
         }
-        case Fit::cover: {
+        case Fit::cover:
+        {
             float maxScale =
                 std::fmax(frame.width() / contentWidth, frame.height() / contentHeight);
             scaleX = scaleY = maxScale;
             break;
         }
-        case Fit::fitHeight: {
+        case Fit::fitHeight:
+        {
             float minScale = frame.height() / contentHeight;
             scaleX = scaleY = minScale;
             break;
         }
-        case Fit::fitWidth: {
+        case Fit::fitWidth:
+        {
             float minScale = frame.width() / contentWidth;
             scaleX = scaleY = minScale;
             break;
         }
-        case Fit::none: {
+        case Fit::none:
+        {
             scaleX = scaleY = 1.0f;
             break;
         }
-        case Fit::scaleDown: {
+        case Fit::scaleDown:
+        {
             float minScale =
                 std::fmin(frame.width() / contentWidth, frame.height() / contentHeight);
             scaleX = scaleY = minScale < 1.0f ? minScale : 1.0f;
@@ -63,7 +72,8 @@
 
 void Renderer::scale(float sx, float sy) { this->transform(Mat2D(sx, 0, 0, sy, 0, 0)); }
 
-void Renderer::rotate(float radians) {
+void Renderer::rotate(float radians)
+{
     const float s = std::sin(radians);
     const float c = std::cos(radians);
     this->transform(Mat2D(c, s, -s, c, 0, 0));
@@ -79,7 +89,8 @@
 RenderPaint::RenderPaint() { Counter::update(Counter::kPaint, 1); }
 RenderPaint::~RenderPaint() { Counter::update(Counter::kPaint, -1); }
 
-RenderImage::RenderImage(const Mat2D& uvTransform) : m_uvTransform(uvTransform) {
+RenderImage::RenderImage(const Mat2D& uvTransform) : m_uvTransform(uvTransform)
+{
     Counter::update(Counter::kImage, 1);
 }
 RenderImage::RenderImage() { Counter::update(Counter::kImage, 1); }
@@ -94,10 +105,12 @@
 
 rive::SimpleArray<RenderGlyphRun>
 RenderFont::shapeText(rive::Span<const rive::Unichar> text,
-                      rive::Span<const rive::RenderTextRun> runs) const {
+                      rive::Span<const rive::RenderTextRun> runs) const
+{
 #ifdef DEBUG
     size_t count = 0;
-    for (const auto& tr : runs) {
+    for (const auto& tr : runs)
+    {
         assert(tr.unicharCount > 0);
         count += tr.unicharCount;
     }
@@ -110,21 +123,26 @@
     rive::RenderGlyphRun* lastRun = nullptr;
     size_t reserveSize = text.size() / 4;
     rive::SimpleArrayBuilder<uint32_t> breakBuilder(reserveSize);
-    for (auto& gr : gruns) {
-        if (lastRun != nullptr) {
+    for (auto& gr : gruns)
+    {
+        if (lastRun != nullptr)
+        {
             lastRun->breaks = std::move(breakBuilder);
             // Reset the builder.
             breakBuilder = rive::SimpleArrayBuilder<uint32_t>(reserveSize);
         }
         uint32_t glyphIndex = 0;
-        for (auto offset : gr.textIndices) {
+        for (auto offset : gr.textIndices)
+        {
 
             auto unicode = text[offset];
-            if (unicode == '\n') {
+            if (unicode == '\n')
+            {
                 breakBuilder.add(glyphIndex);
                 breakBuilder.add(glyphIndex);
             }
-            if (wantWhiteSpace == isWhiteSpace(unicode)) {
+            if (wantWhiteSpace == isWhiteSpace(unicode))
+            {
                 breakBuilder.add(glyphIndex);
                 wantWhiteSpace = !wantWhiteSpace;
             }
@@ -133,15 +151,18 @@
 
         lastRun = &gr;
     }
-    if (lastRun != nullptr) {
-        if (wantWhiteSpace) {
+    if (lastRun != nullptr)
+    {
+        if (wantWhiteSpace)
+        {
             breakBuilder.add((uint32_t)lastRun->glyphs.size());
         }
         lastRun->breaks = std::move(breakBuilder);
     }
 
 #ifdef DEBUG
-    for (const auto& gr : gruns) {
+    for (const auto& gr : gruns)
+    {
         assert(gr.glyphs.size() > 0);
         assert(gr.glyphs.size() == gr.textIndices.size());
         assert(gr.glyphs.size() + 1 == gr.xpos.size());
diff --git a/src/scene.cpp b/src/scene.cpp
index 0551684..b5f6467 100644
--- a/src/scene.cpp
+++ b/src/scene.cpp
@@ -3,7 +3,8 @@
 
 using namespace rive;
 
-Scene::Scene(ArtboardInstance* abi) : m_ArtboardInstance(abi) {
+Scene::Scene(ArtboardInstance* abi) : m_ArtboardInstance(abi)
+{
     assert(m_ArtboardInstance->isInstance());
 }
 
diff --git a/src/shapes/clipping_shape.cpp b/src/shapes/clipping_shape.cpp
index c9b4c97..103ed65 100644
--- a/src/shapes/clipping_shape.cpp
+++ b/src/shapes/clipping_shape.cpp
@@ -9,22 +9,27 @@
 
 using namespace rive;
 
-StatusCode ClippingShape::onAddedClean(CoreContext* context) {
+StatusCode ClippingShape::onAddedClean(CoreContext* context)
+{
     auto clippingHolder = parent();
 
     auto artboard = static_cast<Artboard*>(context);
-    for (auto core : artboard->objects()) {
-        if (core == nullptr) {
+    for (auto core : artboard->objects())
+    {
+        if (core == nullptr)
+        {
             continue;
         }
         // Iterate artboard to find drawables that are parented to this clipping
         // shape, they need to know they'll be clipped by this shape.
-        if (core->is<Drawable>()) {
+        if (core->is<Drawable>())
+        {
             auto drawable = core->as<Drawable>();
             for (ContainerComponent* component = drawable; component != nullptr;
                  component = component->parent())
             {
-                if (component == clippingHolder) {
+                if (component == clippingHolder)
+                {
                     drawable->addClippingShape(this);
                     break;
                 }
@@ -34,10 +39,13 @@
         // Iterate artboard to find shapes that are parented to the source,
         // their paths will need to be RenderPaths in order to be used for
         // clipping operations.
-        if (core->is<Shape>() && core != clippingHolder) {
+        if (core->is<Shape>() && core != clippingHolder)
+        {
             auto component = core->as<ContainerComponent>();
-            while (component != nullptr) {
-                if (component == m_Source) {
+            while (component != nullptr)
+            {
+                if (component == m_Source)
+                {
                     auto shape = core->as<Shape>();
                     shape->addDefaultPathSpace(PathSpace::World | PathSpace::Clipping);
                     m_Shapes.push_back(shape);
@@ -49,20 +57,24 @@
     }
 
     // We only need a render path if we have more than 1 clip path as we join them.
-    if (m_Shapes.size() > 1) {
+    if (m_Shapes.size() > 1)
+    {
         m_RenderPath = artboard->factory()->makeEmptyRenderPath();
     }
 
     return StatusCode::Ok;
 }
 
-StatusCode ClippingShape::onAddedDirty(CoreContext* context) {
+StatusCode ClippingShape::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
     auto coreObject = context->resolve(sourceId());
-    if (coreObject == nullptr || !coreObject->is<Node>()) {
+    if (coreObject == nullptr || !coreObject->is<Node>())
+    {
         return StatusCode::MissingObject;
     }
 
@@ -71,31 +83,43 @@
     return StatusCode::Ok;
 }
 
-void ClippingShape::buildDependencies() {
-    for (auto shape : m_Shapes) {
+void ClippingShape::buildDependencies()
+{
+    for (auto shape : m_Shapes)
+    {
         shape->pathComposer()->addDependent(this);
     }
 }
 
 static Mat2D identity;
-void ClippingShape::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::Path | ComponentDirt::WorldTransform)) {
-        if (m_RenderPath) {
+void ClippingShape::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::Path | ComponentDirt::WorldTransform))
+    {
+        if (m_RenderPath)
+        {
             m_RenderPath->reset();
 
             m_RenderPath->fillRule((FillRule)fillRule());
             m_ClipRenderPath = nullptr;
-            for (auto shape : m_Shapes) {
-                if (!shape->isHidden()) {
+            for (auto shape : m_Shapes)
+            {
+                if (!shape->isHidden())
+                {
                     m_RenderPath->addPath(shape->pathComposer()->worldPath(), identity);
                     m_ClipRenderPath = m_RenderPath.get();
                 }
             }
-        } else {
+        }
+        else
+        {
             auto first = m_Shapes.front();
-            if (first->isHidden()) {
+            if (first->isHidden())
+            {
                 m_ClipRenderPath = nullptr;
-            } else {
+            }
+            else
+            {
                 m_ClipRenderPath = static_cast<RenderPath*>(first->pathComposer()->worldPath());
             }
         }
diff --git a/src/shapes/cubic_asymmetric_vertex.cpp b/src/shapes/cubic_asymmetric_vertex.cpp
index 703c104..2901adf 100644
--- a/src/shapes/cubic_asymmetric_vertex.cpp
+++ b/src/shapes/cubic_asymmetric_vertex.cpp
@@ -6,11 +6,13 @@
 
 static Vec2D get_point(const CubicAsymmetricVertex& v) { return Vec2D(v.x(), v.y()); }
 
-static Vec2D in_vector(const CubicAsymmetricVertex& v) {
+static Vec2D in_vector(const CubicAsymmetricVertex& v)
+{
     return Vec2D(cos(v.rotation()) * v.inDistance(), sin(v.rotation()) * v.inDistance());
 }
 
-static Vec2D out_vector(const CubicAsymmetricVertex& v) {
+static Vec2D out_vector(const CubicAsymmetricVertex& v)
+{
     return Vec2D(cos(v.rotation()) * v.outDistance(), sin(v.rotation()) * v.outDistance());
 }
 
@@ -18,16 +20,19 @@
 
 void CubicAsymmetricVertex::computeOut() { m_OutPoint = get_point(*this) + out_vector(*this); }
 
-void CubicAsymmetricVertex::rotationChanged() {
+void CubicAsymmetricVertex::rotationChanged()
+{
     m_InValid = false;
     m_OutValid = false;
     markGeometryDirty();
 }
-void CubicAsymmetricVertex::inDistanceChanged() {
+void CubicAsymmetricVertex::inDistanceChanged()
+{
     m_InValid = false;
     markGeometryDirty();
 }
-void CubicAsymmetricVertex::outDistanceChanged() {
+void CubicAsymmetricVertex::outDistanceChanged()
+{
     m_OutValid = false;
     markGeometryDirty();
 }
diff --git a/src/shapes/cubic_detached_vertex.cpp b/src/shapes/cubic_detached_vertex.cpp
index 8a93166..3706f08 100644
--- a/src/shapes/cubic_detached_vertex.cpp
+++ b/src/shapes/cubic_detached_vertex.cpp
@@ -6,11 +6,13 @@
 
 static Vec2D get_point(const CubicDetachedVertex& v) { return Vec2D(v.x(), v.y()); }
 
-static Vec2D in_vector(const CubicDetachedVertex& v) {
+static Vec2D in_vector(const CubicDetachedVertex& v)
+{
     return Vec2D(cos(v.inRotation()) * v.inDistance(), sin(v.inRotation()) * v.inDistance());
 }
 
-static Vec2D out_vector(const CubicDetachedVertex& v) {
+static Vec2D out_vector(const CubicDetachedVertex& v)
+{
     return Vec2D(cos(v.outRotation()) * v.outDistance(), sin(v.outRotation()) * v.outDistance());
 }
 
@@ -18,19 +20,23 @@
 
 void CubicDetachedVertex::computeOut() { m_OutPoint = get_point(*this) + out_vector(*this); }
 
-void CubicDetachedVertex::inRotationChanged() {
+void CubicDetachedVertex::inRotationChanged()
+{
     m_InValid = false;
     markGeometryDirty();
 }
-void CubicDetachedVertex::inDistanceChanged() {
+void CubicDetachedVertex::inDistanceChanged()
+{
     m_InValid = false;
     markGeometryDirty();
 }
-void CubicDetachedVertex::outRotationChanged() {
+void CubicDetachedVertex::outRotationChanged()
+{
     m_OutValid = false;
     markGeometryDirty();
 }
-void CubicDetachedVertex::outDistanceChanged() {
+void CubicDetachedVertex::outDistanceChanged()
+{
     m_OutValid = false;
     markGeometryDirty();
 }
diff --git a/src/shapes/cubic_mirrored_vertex.cpp b/src/shapes/cubic_mirrored_vertex.cpp
index 5656622..0a23c44 100644
--- a/src/shapes/cubic_mirrored_vertex.cpp
+++ b/src/shapes/cubic_mirrored_vertex.cpp
@@ -6,7 +6,8 @@
 
 static Vec2D get_point(const CubicMirroredVertex& v) { return Vec2D(v.x(), v.y()); }
 
-static Vec2D get_vector(const CubicMirroredVertex& v) {
+static Vec2D get_vector(const CubicMirroredVertex& v)
+{
     return Vec2D(cos(v.rotation()) * v.distance(), sin(v.rotation()) * v.distance());
 }
 
@@ -14,11 +15,13 @@
 
 void CubicMirroredVertex::computeOut() { m_OutPoint = get_point(*this) + get_vector(*this); }
 
-void CubicMirroredVertex::rotationChanged() {
+void CubicMirroredVertex::rotationChanged()
+{
     m_InValid = m_OutValid = false;
     markGeometryDirty();
 }
-void CubicMirroredVertex::distanceChanged() {
+void CubicMirroredVertex::distanceChanged()
+{
     m_InValid = m_OutValid = false;
     markGeometryDirty();
 }
diff --git a/src/shapes/cubic_vertex.cpp b/src/shapes/cubic_vertex.cpp
index 5964ede..7fe7eca 100644
--- a/src/shapes/cubic_vertex.cpp
+++ b/src/shapes/cubic_vertex.cpp
@@ -2,58 +2,75 @@
 #include "rive/bones/cubic_weight.hpp"
 using namespace rive;
 
-const Vec2D& CubicVertex::renderIn() {
-    if (hasWeight()) {
+const Vec2D& CubicVertex::renderIn()
+{
+    if (hasWeight())
+    {
         return weight<CubicWeight>()->inTranslation();
-    } else {
+    }
+    else
+    {
         return inPoint();
     }
 }
 
-const Vec2D& CubicVertex::renderOut() {
-    if (hasWeight()) {
+const Vec2D& CubicVertex::renderOut()
+{
+    if (hasWeight())
+    {
         return weight<CubicWeight>()->outTranslation();
-    } else {
+    }
+    else
+    {
         return outPoint();
     }
 }
 
-const Vec2D& CubicVertex::inPoint() {
-    if (!m_InValid) {
+const Vec2D& CubicVertex::inPoint()
+{
+    if (!m_InValid)
+    {
         computeIn();
         m_InValid = true;
     }
     return m_InPoint;
 }
 
-const Vec2D& CubicVertex::outPoint() {
-    if (!m_OutValid) {
+const Vec2D& CubicVertex::outPoint()
+{
+    if (!m_OutValid)
+    {
         computeOut();
         m_OutValid = true;
     }
     return m_OutPoint;
 }
 
-void CubicVertex::outPoint(const Vec2D& value) {
+void CubicVertex::outPoint(const Vec2D& value)
+{
     m_OutPoint = value;
     m_OutValid = true;
 }
 
-void CubicVertex::inPoint(const Vec2D& value) {
+void CubicVertex::inPoint(const Vec2D& value)
+{
     m_InPoint = value;
     m_InValid = true;
 }
 
-void CubicVertex::xChanged() {
+void CubicVertex::xChanged()
+{
     Super::xChanged();
     m_InValid = m_OutValid = false;
 }
-void CubicVertex::yChanged() {
+void CubicVertex::yChanged()
+{
     Super::yChanged();
     m_InValid = m_OutValid = false;
 }
 
-void CubicVertex::deform(const Mat2D& worldTransform, const float* boneTransforms) {
+void CubicVertex::deform(const Mat2D& worldTransform, const float* boneTransforms)
+{
     Super::deform(worldTransform, boneTransforms);
 
     auto cubicWeight = weight<CubicWeight>();
diff --git a/src/shapes/ellipse.cpp b/src/shapes/ellipse.cpp
index 474068a..06489e6 100644
--- a/src/shapes/ellipse.cpp
+++ b/src/shapes/ellipse.cpp
@@ -4,15 +4,18 @@
 
 using namespace rive;
 
-Ellipse::Ellipse() {
+Ellipse::Ellipse()
+{
     addVertex(&m_Vertex1);
     addVertex(&m_Vertex2);
     addVertex(&m_Vertex3);
     addVertex(&m_Vertex4);
 }
 
-void Ellipse::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::Path)) {
+void Ellipse::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::Path))
+    {
         auto radiusX = width() / 2.0f;
         auto radiusY = height() / 2.0f;
 
diff --git a/src/shapes/image.cpp b/src/shapes/image.cpp
index 04d90a5..bc00c82 100644
--- a/src/shapes/image.cpp
+++ b/src/shapes/image.cpp
@@ -9,7 +9,8 @@
 
 using namespace rive;
 
-void Image::draw(Renderer* renderer) {
+void Image::draw(Renderer* renderer)
+{
     rive::RenderImage* renderImage;
     if (m_ImageAsset == nullptr || renderOpacity() == 0.0f ||
         (renderImage = m_ImageAsset->renderImage()) == nullptr)
@@ -17,7 +18,8 @@
         return;
     }
 
-    if (!clip(renderer)) {
+    if (!clip(renderer))
+    {
         // We didn't clip, so make sure to save as we'll be doing some
         // transformations.
         renderer->save();
@@ -26,9 +28,12 @@
     auto width = renderImage->width();
     auto height = renderImage->height();
 
-    if (m_Mesh != nullptr) {
+    if (m_Mesh != nullptr)
+    {
         m_Mesh->draw(renderer, renderImage, blendMode(), renderOpacity());
-    } else {
+    }
+    else
+    {
         renderer->transform(worldTransform());
         renderer->translate(-width / 2.0f, -height / 2.0f);
         renderer->drawImage(renderImage, blendMode(), renderOpacity());
@@ -37,30 +42,37 @@
     renderer->restore();
 }
 
-Core* Image::hitTest(HitInfo* hinfo, const Mat2D& xform) {
+Core* Image::hitTest(HitInfo* hinfo, const Mat2D& xform)
+{
     // TODO: handle clip?
 
     auto renderImage = m_ImageAsset->renderImage();
     int width = renderImage->width();
     int height = renderImage->height();
 
-    if (m_Mesh) {
+    if (m_Mesh)
+    {
         printf("Missing mesh\n");
         // TODO: hittest mesh
-    } else {
+    }
+    else
+    {
         auto mx = xform * worldTransform() * Mat2D::fromTranslate(-width * 0.5f, -height * 0.5f);
         HitTester tester(hinfo->area);
         tester.addRect(AABB(0, 0, (float)width, (float)height), mx);
-        if (tester.test()) {
+        if (tester.test())
+        {
             return this;
         }
     }
     return nullptr;
 }
 
-StatusCode Image::import(ImportStack& importStack) {
+StatusCode Image::import(ImportStack& importStack)
+{
     auto backboardImporter = importStack.latest<BackboardImporter>(Backboard::typeKey);
-    if (backboardImporter == nullptr) {
+    if (backboardImporter == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     backboardImporter->addFileAssetReferencer(this);
@@ -68,23 +80,28 @@
     return Super::import(importStack);
 }
 
-void Image::assets(const std::vector<FileAsset*>& assets) {
-    if ((size_t)assetId() >= assets.size()) {
+void Image::assets(const std::vector<FileAsset*>& assets)
+{
+    if ((size_t)assetId() >= assets.size())
+    {
         return;
     }
     auto asset = assets[assetId()];
-    if (asset->is<ImageAsset>()) {
+    if (asset->is<ImageAsset>())
+    {
         m_ImageAsset = asset->as<ImageAsset>();
 
         // If we have a mesh and we're in the source artboard, let's initialize
         // the mesh buffers.
-        if (m_Mesh != nullptr && !artboard()->isInstance()) {
+        if (m_Mesh != nullptr && !artboard()->isInstance())
+        {
             m_Mesh->initializeSharedBuffers(m_ImageAsset->renderImage());
         }
     }
 }
 
-Core* Image::clone() const {
+Core* Image::clone() const
+{
     Image* twin = ImageBase::clone()->as<Image>();
     twin->m_ImageAsset = m_ImageAsset;
     return twin;
diff --git a/src/shapes/mesh.cpp b/src/shapes/mesh.cpp
index 5c843d9..50ec298 100644
--- a/src/shapes/mesh.cpp
+++ b/src/shapes/mesh.cpp
@@ -12,8 +12,10 @@
 using namespace rive;
 
 /// Called whenever a vertex moves (x/y change).
-void Mesh::markDrawableDirty() {
-    if (skin() != nullptr) {
+void Mesh::markDrawableDirty()
+{
+    if (skin() != nullptr)
+    {
         skin()->addDirt(ComponentDirt::Skin);
     }
 
@@ -22,13 +24,16 @@
 
 void Mesh::addVertex(MeshVertex* vertex) { m_Vertices.push_back(vertex); }
 
-StatusCode Mesh::onAddedDirty(CoreContext* context) {
+StatusCode Mesh::onAddedDirty(CoreContext* context)
+{
     StatusCode result = Super::onAddedDirty(context);
-    if (result != StatusCode::Ok) {
+    if (result != StatusCode::Ok)
+    {
         return result;
     }
 
-    if (!parent()->is<Image>()) {
+    if (!parent()->is<Image>())
+    {
         return StatusCode::MissingObject;
     }
 
@@ -38,54 +43,64 @@
     return StatusCode::Ok;
 }
 
-StatusCode Mesh::onAddedClean(CoreContext* context) {
+StatusCode Mesh::onAddedClean(CoreContext* context)
+{
     // Make sure Core found indices in the file for this Mesh.
-    if (m_IndexBuffer == nullptr) {
+    if (m_IndexBuffer == nullptr)
+    {
         return StatusCode::InvalidObject;
     }
 
     // Check the indices are all in range. We should consider having a better
     // error reporting system to the implementor.
-    for (auto index : *m_IndexBuffer) {
-        if (index >= m_Vertices.size()) {
+    for (auto index : *m_IndexBuffer)
+    {
+        if (index >= m_Vertices.size())
+        {
             return StatusCode::InvalidObject;
         }
     }
     return Super::onAddedClean(context);
 }
 
-void Mesh::decodeTriangleIndexBytes(Span<const uint8_t> value) {
+void Mesh::decodeTriangleIndexBytes(Span<const uint8_t> value)
+{
     // decode the triangle index bytes
     rcp<IndexBuffer> buffer = rcp<IndexBuffer>(new IndexBuffer());
 
     BinaryReader reader(value);
-    while (!reader.reachedEnd()) {
+    while (!reader.reachedEnd())
+    {
         buffer->push_back(reader.readVarUintAs<uint16_t>());
     }
     m_IndexBuffer = buffer;
 }
 
-void Mesh::copyTriangleIndexBytes(const MeshBase& object) {
+void Mesh::copyTriangleIndexBytes(const MeshBase& object)
+{
     m_IndexBuffer = object.as<Mesh>()->m_IndexBuffer;
 }
 
 /// Called whenever a bone moves that is connected to the skin.
 void Mesh::markSkinDirty() { addDirt(ComponentDirt::Vertices); }
 
-Core* Mesh::clone() const {
+Core* Mesh::clone() const
+{
     auto clone = static_cast<Mesh*>(MeshBase::clone());
     clone->m_UVRenderBuffer = m_UVRenderBuffer;
     clone->m_IndexRenderBuffer = m_IndexRenderBuffer;
     return clone;
 }
 
-void Mesh::initializeSharedBuffers(RenderImage* renderImage) {
+void Mesh::initializeSharedBuffers(RenderImage* renderImage)
+{
     Mat2D uvTransform = renderImage != nullptr ? renderImage->uvTransform() : Mat2D();
 
     std::vector<float> uv = std::vector<float>(m_Vertices.size() * 2);
     std::size_t index = 0;
 
-    for (auto vertex : m_Vertices) {
+    for (auto vertex : m_Vertices)
+    {
         Vec2D xformedUV = uvTransform * Vec2D(vertex->u(), vertex->v());
         uv[index++] = xformedUV.x;
         uv[index++] = xformedUV.y;
@@ -96,17 +111,22 @@
     m_IndexRenderBuffer = factory->makeBufferU16(*m_IndexBuffer);
 }
 
-void Mesh::buildDependencies() {
+void Mesh::buildDependencies()
+{
     Super::buildDependencies();
-    if (skin() != nullptr) {
+    if (skin() != nullptr)
+    {
         skin()->addDependent(this);
     }
     parent()->addDependent(this);
 }
 
-void Mesh::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::Vertices)) {
-        if (skin() != nullptr) {
+void Mesh::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::Vertices))
+    {
+        if (skin() != nullptr)
+        {
             skin()->deform({(Vertex**)m_Vertices.data(), m_Vertices.size()});
         }
         m_VertexRenderBuffer = nullptr;
@@ -114,12 +134,15 @@
     Super::update(value);
 }
 
-void Mesh::draw(Renderer* renderer, const RenderImage* image, BlendMode blendMode, float opacity) {
-    if (m_VertexRenderBuffer == nullptr) {
+void Mesh::draw(Renderer* renderer, const RenderImage* image, BlendMode blendMode, float opacity)
+{
+    if (m_VertexRenderBuffer == nullptr)
+    {
 
         std::vector<float> vertices(m_Vertices.size() * 2);
         std::size_t index = 0;
-        for (auto vertex : m_Vertices) {
+        for (auto vertex : m_Vertices)
+        {
             auto translation = vertex->renderTranslation();
             vertices[index++] = translation.x;
             vertices[index++] = translation.y;
@@ -129,7 +152,8 @@
         m_VertexRenderBuffer = factory->makeBufferF32(vertices);
     }
 
-    if (skin() == nullptr) {
+    if (skin() == nullptr)
+    {
         renderer->transform(parent()->as<WorldTransformComponent>()->worldTransform());
     }
     renderer->drawImageMesh(image,
diff --git a/src/shapes/mesh_vertex.cpp b/src/shapes/mesh_vertex.cpp
index d381f17..818ac22 100644
--- a/src/shapes/mesh_vertex.cpp
+++ b/src/shapes/mesh_vertex.cpp
@@ -4,12 +4,15 @@
 using namespace rive;
 void MeshVertex::markGeometryDirty() { parent()->as<Mesh>()->markDrawableDirty(); }
 
-StatusCode MeshVertex::onAddedDirty(CoreContext* context) {
+StatusCode MeshVertex::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
-    if (!parent()->is<Mesh>()) {
+    if (!parent()->is<Mesh>())
+    {
         return StatusCode::MissingObject;
     }
     parent()->as<Mesh>()->addVertex(this);
diff --git a/src/shapes/metrics_path.cpp b/src/shapes/metrics_path.cpp
index 5082f6d..ec84676 100644
--- a/src/shapes/metrics_path.cpp
+++ b/src/shapes/metrics_path.cpp
@@ -7,7 +7,8 @@
 
 using namespace rive;
 
-void MetricsPath::reset() {
+void MetricsPath::reset()
+{
     m_Paths.clear();
     m_Contour.reset(nullptr);
     m_RawPath = RawPath();
@@ -15,30 +16,36 @@
     m_ComputedLength = 0;
 }
 
-void MetricsPath::addPath(CommandPath* path, const Mat2D& transform) {
+void MetricsPath::addPath(CommandPath* path, const Mat2D& transform)
+{
     MetricsPath* metricsPath = reinterpret_cast<MetricsPath*>(path);
     m_ComputedLength += metricsPath->computeLength(transform);
     m_Paths.emplace_back(metricsPath);
 }
 
-void MetricsPath::moveTo(float x, float y) {
+void MetricsPath::moveTo(float x, float y)
+{
     assert(m_RawPath.points().size() == 0);
     m_RawPath.move({x, y});
 }
 
 void MetricsPath::lineTo(float x, float y) { m_RawPath.line({x, y}); }
 
-void MetricsPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y) {
+void MetricsPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y)
+{
     m_RawPath.cubic({ox, oy}, {ix, iy}, {x, y});
 }
 
-void MetricsPath::close() {
+void MetricsPath::close()
+{
     // Should we pass the close() to our m_RawPath ???
 }
 
-float MetricsPath::computeLength(const Mat2D& transform) {
+float MetricsPath::computeLength(const Mat2D& transform)
+{
     // Only compute if our pre-computed length is not valid
-    if (!m_Contour || transform != m_ComputedLengthTransform) {
+    if (!m_Contour || transform != m_ComputedLengthTransform)
+    {
         m_ComputedLengthTransform = transform;
         m_Contour = ContourMeasureIter(m_RawPath * transform).next();
         m_ComputedLength = m_Contour ? m_Contour->length() : 0;
@@ -46,9 +53,11 @@
     return m_ComputedLength;
 }
 
-void MetricsPath::trim(float startLength, float endLength, bool moveTo, RenderPath* result) {
+void MetricsPath::trim(float startLength, float endLength, bool moveTo, RenderPath* result)
+{
     assert(endLength >= startLength);
-    if (!m_Paths.empty()) {
+    if (!m_Paths.empty())
+    {
         m_Paths.front()->trim(startLength, endLength, moveTo, result);
         return;
     }
@@ -62,34 +71,41 @@
 }
 
 RenderMetricsPath::RenderMetricsPath(std::unique_ptr<RenderPath> path) :
-    m_RenderPath(std::move(path)) {}
+    m_RenderPath(std::move(path))
+{}
 
-void RenderMetricsPath::addPath(CommandPath* path, const Mat2D& transform) {
+void RenderMetricsPath::addPath(CommandPath* path, const Mat2D& transform)
+{
     MetricsPath::addPath(path, transform);
     m_RenderPath->addPath(path->renderPath(), transform);
 }
 
-void RenderMetricsPath::reset() {
+void RenderMetricsPath::reset()
+{
     MetricsPath::reset();
     m_RenderPath->reset();
 }
 
-void RenderMetricsPath::moveTo(float x, float y) {
+void RenderMetricsPath::moveTo(float x, float y)
+{
     MetricsPath::moveTo(x, y);
     m_RenderPath->moveTo(x, y);
 }
 
-void RenderMetricsPath::lineTo(float x, float y) {
+void RenderMetricsPath::lineTo(float x, float y)
+{
     MetricsPath::lineTo(x, y);
     m_RenderPath->lineTo(x, y);
 }
 
-void RenderMetricsPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y) {
+void RenderMetricsPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y)
+{
     MetricsPath::cubicTo(ox, oy, ix, iy, x, y);
     m_RenderPath->cubicTo(ox, oy, ix, iy, x, y);
 }
 
-void RenderMetricsPath::close() {
+void RenderMetricsPath::close()
+{
     MetricsPath::close();
     m_RenderPath->close();
 }
diff --git a/src/shapes/paint/color.cpp b/src/shapes/paint/color.cpp
index 8e5c98f..059d524 100644
--- a/src/shapes/paint/color.cpp
+++ b/src/shapes/paint/color.cpp
@@ -1,8 +1,10 @@
 #include "rive/shapes/paint/color.hpp"
 #include <stdio.h>
 
-namespace rive {
-unsigned int colorARGB(int a, int r, int g, int b) {
+namespace rive
+{
+unsigned int colorARGB(int a, int r, int g, int b)
+{
     return (((a & 0xff) << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | ((b & 0xff) << 0)) &
            0xFFFFFFFF;
 }
@@ -17,23 +19,28 @@
 
 float colorOpacity(ColorInt value) { return (float)colorAlpha(value) / 0xFF; }
 
-ColorInt colorWithAlpha(ColorInt value, unsigned int a) {
+ColorInt colorWithAlpha(ColorInt value, unsigned int a)
+{
     return colorARGB(a, colorRed(value), colorGreen(value), colorBlue(value));
 }
 
-ColorInt colorWithOpacity(ColorInt value, float opacity) {
+ColorInt colorWithOpacity(ColorInt value, float opacity)
+{
     return colorWithAlpha(value, std::lround(255.f * opacity));
 }
 
-ColorInt colorModulateOpacity(ColorInt value, float opacity) {
+ColorInt colorModulateOpacity(ColorInt value, float opacity)
+{
     return colorWithAlpha(value, std::lround(255.f * colorOpacity(value) * opacity));
 }
 
-static unsigned int lerp(unsigned int a, unsigned int b, float mix) {
+static unsigned int lerp(unsigned int a, unsigned int b, float mix)
+{
     return std::lround(a * (1.0f - mix) + b * mix);
 }
 
-ColorInt colorLerp(ColorInt from, ColorInt to, float mix) {
+ColorInt colorLerp(ColorInt from, ColorInt to, float mix)
+{
     return colorARGB(lerp(colorAlpha(from), colorAlpha(to), mix),
                      lerp(colorRed(from), colorRed(to), mix),
                      lerp(colorGreen(from), colorGreen(to), mix),
diff --git a/src/shapes/paint/fill.cpp b/src/shapes/paint/fill.cpp
index d451982..5d40346 100644
--- a/src/shapes/paint/fill.cpp
+++ b/src/shapes/paint/fill.cpp
@@ -4,14 +4,17 @@
 
 PathSpace Fill::pathSpace() const { return PathSpace::Local; }
 
-RenderPaint* Fill::initRenderPaint(ShapePaintMutator* mutator) {
+RenderPaint* Fill::initRenderPaint(ShapePaintMutator* mutator)
+{
     auto renderPaint = Super::initRenderPaint(mutator);
     renderPaint->style(RenderPaintStyle::fill);
     return renderPaint;
 }
 
-void Fill::draw(Renderer* renderer, CommandPath* path) {
-    if (!isVisible()) {
+void Fill::draw(Renderer* renderer, CommandPath* path)
+{
+    if (!isVisible())
+    {
         return;
     }
     auto renderPath = path->renderPath();
diff --git a/src/shapes/paint/gradient_stop.cpp b/src/shapes/paint/gradient_stop.cpp
index 7a026e0..fa616df 100644
--- a/src/shapes/paint/gradient_stop.cpp
+++ b/src/shapes/paint/gradient_stop.cpp
@@ -3,13 +3,16 @@
 
 using namespace rive;
 
-StatusCode GradientStop::onAddedDirty(CoreContext* context) {
+StatusCode GradientStop::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
 
-    if (!parent()->is<LinearGradient>()) {
+    if (!parent()->is<LinearGradient>())
+    {
         return StatusCode::MissingObject;
     }
     parent()->as<LinearGradient>()->addStop(this);
diff --git a/src/shapes/paint/linear_gradient.cpp b/src/shapes/paint/linear_gradient.cpp
index 850c4eb..cc68efa 100644
--- a/src/shapes/paint/linear_gradient.cpp
+++ b/src/shapes/paint/linear_gradient.cpp
@@ -12,21 +12,26 @@
 
 using namespace rive;
 
-StatusCode LinearGradient::onAddedDirty(CoreContext* context) {
+StatusCode LinearGradient::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
 
-    if (!initPaintMutator(this)) {
+    if (!initPaintMutator(this))
+    {
         return StatusCode::MissingObject;
     }
     return StatusCode::Ok;
 }
 
-void LinearGradient::buildDependencies() {
+void LinearGradient::buildDependencies()
+{
     auto p = parent();
-    if (p != nullptr && p->parent() != nullptr) {
+    if (p != nullptr && p->parent() != nullptr)
+    {
         auto parentsParent = p->parent();
         // Parent's parent must be a shape paint container.
         assert(ShapePaintContainer::from(parentsParent) != nullptr);
@@ -42,14 +47,17 @@
 
 void LinearGradient::addStop(GradientStop* stop) { m_Stops.push_back(stop); }
 
-static bool stopsComparer(GradientStop* a, GradientStop* b) {
+static bool stopsComparer(GradientStop* a, GradientStop* b)
+{
     return a->position() < b->position();
 }
 
-void LinearGradient::update(ComponentDirt value) {
+void LinearGradient::update(ComponentDirt value)
+{
     // Do the stops need to be re-ordered?
     bool stopsChanged = hasDirt(value, ComponentDirt::Stops);
-    if (stopsChanged) {
+    if (stopsChanged)
+    {
         std::sort(m_Stops.begin(), m_Stops.end(), stopsComparer);
     }
 
@@ -63,13 +71,15 @@
         hasDirt(value,
                 ComponentDirt::Paint | ComponentDirt::RenderOpacity | ComponentDirt::Transform) ||
         (paintsInWorldSpace && worldTransformed);
-    if (rebuildGradient) {
+    if (rebuildGradient)
+    {
         Vec2D start(startX(), startY());
         Vec2D end(endX(), endY());
         // Check if we need to update the world space gradient (if there's no
         // shape container, presumably it's the artboard and we're already in
         // world).
-        if (paintsInWorldSpace && m_ShapePaintContainer != nullptr) {
+        if (paintsInWorldSpace && m_ShapePaintContainer != nullptr)
+        {
             // Get the start and end of the gradient in world coordinates (world
             // transform of the shape).
             const Mat2D& world = m_ShapePaintContainer->worldTransform();
@@ -87,7 +97,8 @@
         ColorInt* colors = storage.data();
         float* stops = (float*)colors + count;
 
-        for (size_t i = 0; i < count; ++i) {
+        for (size_t i = 0; i < count; ++i)
+        {
             colors[i] = colorModulateOpacity(m_Stops[i]->colorValue(), ro);
             stops[i] = m_Stops[i]->position();
         }
@@ -100,7 +111,8 @@
                                   Vec2D end,
                                   const ColorInt colors[],
                                   const float stops[],
-                                  size_t count) {
+                                  size_t count)
+{
     auto factory = artboard()->factory();
     renderPaint()->shader(
         factory->makeLinearGradient(start.x, start.y, end.x, end.y, colors, stops, count));
@@ -117,12 +129,16 @@
 void LinearGradient::endYChanged() { addDirt(ComponentDirt::Transform); }
 void LinearGradient::opacityChanged() { markGradientDirty(); }
 
-bool LinearGradient::internalIsTranslucent() const {
-    if (opacity() < 1) {
+bool LinearGradient::internalIsTranslucent() const
+{
+    if (opacity() < 1)
+    {
         return true;
     }
-    for (const auto stop : m_Stops) {
-        if (colorAlpha(stop->colorValue()) != 0xFF) {
+    for (const auto stop : m_Stops)
+    {
+        if (colorAlpha(stop->colorValue()) != 0xFF)
+        {
             return true;
         }
     }
diff --git a/src/shapes/paint/radial_gradient.cpp b/src/shapes/paint/radial_gradient.cpp
index 46ae43f..8a1abad 100644
--- a/src/shapes/paint/radial_gradient.cpp
+++ b/src/shapes/paint/radial_gradient.cpp
@@ -8,7 +8,8 @@
                                   Vec2D end,
                                   const ColorInt colors[],
                                   const float stops[],
-                                  size_t count) {
+                                  size_t count)
+{
     auto factory = artboard()->factory();
     renderPaint()->shader(factory->makeRadialGradient(start.x,
                                                       start.y,
diff --git a/src/shapes/paint/shape_paint.cpp b/src/shapes/paint/shape_paint.cpp
index b1d2890..bdc50c9 100644
--- a/src/shapes/paint/shape_paint.cpp
+++ b/src/shapes/paint/shape_paint.cpp
@@ -6,16 +6,19 @@
 
 using namespace rive;
 
-StatusCode ShapePaint::onAddedClean(CoreContext* context) {
+StatusCode ShapePaint::onAddedClean(CoreContext* context)
+{
     auto container = ShapePaintContainer::from(parent());
-    if (container == nullptr) {
+    if (container == nullptr)
+    {
         return StatusCode::MissingObject;
     }
     container->addPaint(this);
     return StatusCode::Ok;
 }
 
-RenderPaint* ShapePaint::initRenderPaint(ShapePaintMutator* mutator) {
+RenderPaint* ShapePaint::initRenderPaint(ShapePaintMutator* mutator)
+{
     assert(m_RenderPaint == nullptr);
     m_PaintMutator = mutator;
 
@@ -24,7 +27,8 @@
     return m_RenderPaint.get();
 }
 
-void ShapePaint::blendMode(BlendMode value) {
+void ShapePaint::blendMode(BlendMode value)
+{
     assert(m_RenderPaint != nullptr);
     m_RenderPaint->blendMode(value);
 }
\ No newline at end of file
diff --git a/src/shapes/paint/shape_paint_mutator.cpp b/src/shapes/paint/shape_paint_mutator.cpp
index 534f744..093e71b 100644
--- a/src/shapes/paint/shape_paint_mutator.cpp
+++ b/src/shapes/paint/shape_paint_mutator.cpp
@@ -4,10 +4,12 @@
 
 using namespace rive;
 
-bool ShapePaintMutator::initPaintMutator(Component* component) {
+bool ShapePaintMutator::initPaintMutator(Component* component)
+{
     auto parent = component->parent();
     m_Component = component;
-    if (parent->is<ShapePaint>()) {
+    if (parent->is<ShapePaint>())
+    {
         // Set this object as the mutator for the shape paint and get a
         // reference to the paint we'll be mutating.
         m_RenderPaint = parent->as<ShapePaint>()->initRenderPaint(this);
@@ -16,8 +18,10 @@
     return false;
 }
 
-void ShapePaintMutator::renderOpacity(float value) {
-    if (m_RenderOpacity == value) {
+void ShapePaintMutator::renderOpacity(float value)
+{
+    if (m_RenderOpacity == value)
+    {
         return;
     }
     m_RenderOpacity = value;
diff --git a/src/shapes/paint/solid_color.cpp b/src/shapes/paint/solid_color.cpp
index b9fd08e..d6f05c6 100644
--- a/src/shapes/paint/solid_color.cpp
+++ b/src/shapes/paint/solid_color.cpp
@@ -5,20 +5,25 @@
 
 using namespace rive;
 
-StatusCode SolidColor::onAddedDirty(CoreContext* context) {
+StatusCode SolidColor::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
-    if (!initPaintMutator(this)) {
+    if (!initPaintMutator(this))
+    {
         return StatusCode::MissingObject;
     }
     renderOpacityChanged();
     return StatusCode::Ok;
 }
 
-void SolidColor::renderOpacityChanged() {
-    if (renderPaint() == nullptr) {
+void SolidColor::renderOpacityChanged()
+{
+    if (renderPaint() == nullptr)
+    {
         return;
     }
     renderPaint()->color(colorModulateOpacity(colorValue(), renderOpacity()));
diff --git a/src/shapes/paint/stroke.cpp b/src/shapes/paint/stroke.cpp
index ac8d196..ff31194 100644
--- a/src/shapes/paint/stroke.cpp
+++ b/src/shapes/paint/stroke.cpp
@@ -6,11 +6,13 @@
 
 using namespace rive;
 
-PathSpace Stroke::pathSpace() const {
+PathSpace Stroke::pathSpace() const
+{
     return transformAffectsStroke() ? PathSpace::Local : PathSpace::World;
 }
 
-RenderPaint* Stroke::initRenderPaint(ShapePaintMutator* mutator) {
+RenderPaint* Stroke::initRenderPaint(ShapePaintMutator* mutator)
+{
     auto renderPaint = Super::initRenderPaint(mutator);
     renderPaint->style(RenderPaintStyle::stroke);
     renderPaint->thickness(thickness());
@@ -21,12 +23,15 @@
 
 bool Stroke::isVisible() const { return Super::isVisible() && thickness() > 0.0f; }
 
-void Stroke::draw(Renderer* renderer, CommandPath* path) {
-    if (!isVisible()) {
+void Stroke::draw(Renderer* renderer, CommandPath* path)
+{
+    if (!isVisible())
+    {
         return;
     }
 
-    if (m_Effect != nullptr) {
+    if (m_Effect != nullptr)
+    {
         /// We're guaranteed to get a metrics path here if we have an effect.
         auto factory = artboard()->factory();
         path = m_Effect->effectPath(reinterpret_cast<MetricsPath*>(path), factory);
@@ -35,31 +40,37 @@
     renderer->drawPath(path->renderPath(), renderPaint());
 }
 
-void Stroke::thicknessChanged() {
+void Stroke::thicknessChanged()
+{
     assert(m_RenderPaint != nullptr);
     m_RenderPaint->thickness(thickness());
 }
 
-void Stroke::capChanged() {
+void Stroke::capChanged()
+{
     assert(m_RenderPaint != nullptr);
     m_RenderPaint->cap((StrokeCap)cap());
 }
 
-void Stroke::joinChanged() {
+void Stroke::joinChanged()
+{
     assert(m_RenderPaint != nullptr);
     m_RenderPaint->join((StrokeJoin)join());
 }
 
 void Stroke::addStrokeEffect(StrokeEffect* effect) { m_Effect = effect; }
 
-void Stroke::invalidateEffects() {
-    if (m_Effect != nullptr) {
+void Stroke::invalidateEffects()
+{
+    if (m_Effect != nullptr)
+    {
         m_Effect->invalidateEffect();
     }
     invalidateRendering();
 }
 
-void Stroke::invalidateRendering() {
+void Stroke::invalidateRendering()
+{
     assert(m_RenderPaint != nullptr);
     m_RenderPaint->invalidateStroke();
 }
\ No newline at end of file
diff --git a/src/shapes/paint/trim_path.cpp b/src/shapes/paint/trim_path.cpp
index 079c021..32c5d01 100644
--- a/src/shapes/paint/trim_path.cpp
+++ b/src/shapes/paint/trim_path.cpp
@@ -5,8 +5,10 @@
 
 using namespace rive;
 
-StatusCode TrimPath::onAddedClean(CoreContext* context) {
-    if (!parent()->is<Stroke>()) {
+StatusCode TrimPath::onAddedClean(CoreContext* context)
+{
+    if (!parent()->is<Stroke>())
+    {
         return StatusCode::InvalidObject;
     }
 
@@ -15,85 +17,106 @@
     return StatusCode::Ok;
 }
 
-RenderPath* TrimPath::effectPath(MetricsPath* source, Factory* factory) {
-    if (m_RenderPath != nullptr) {
+RenderPath* TrimPath::effectPath(MetricsPath* source, Factory* factory)
+{
+    if (m_RenderPath != nullptr)
+    {
         return m_RenderPath;
     }
 
     // Source is always a containing (shape) path.
     const std::vector<MetricsPath*>& subPaths = source->paths();
 
-    if (!m_TrimmedPath) {
+    if (!m_TrimmedPath)
+    {
         m_TrimmedPath = factory->makeEmptyRenderPath();
-    } else {
+    }
+    else
+    {
         m_TrimmedPath->reset();
     }
 
     auto renderOffset = std::fmod(std::fmod(offset(), 1.0f) + 1.0f, 1.0f);
-    switch (modeValue()) {
-        case 1: {
+    switch (modeValue())
+    {
+        case 1:
+        {
             float totalLength = source->length();
             auto startLength = totalLength * (start() + renderOffset);
             auto endLength = totalLength * (end() + renderOffset);
 
-            if (endLength < startLength) {
+            if (endLength < startLength)
+            {
                 float swap = startLength;
                 startLength = endLength;
                 endLength = swap;
             }
 
-            if (startLength > totalLength) {
+            if (startLength > totalLength)
+            {
                 startLength -= totalLength;
                 endLength -= totalLength;
             }
 
             int i = 0, subPathCount = (int)subPaths.size();
-            while (endLength > 0) {
+            while (endLength > 0)
+            {
                 auto path = subPaths[i % subPathCount];
                 auto pathLength = path->length();
 
-                if (startLength < pathLength) {
+                if (startLength < pathLength)
+                {
                     path->trim(startLength, endLength, true, m_TrimmedPath.get());
                     endLength -= pathLength;
                     startLength = 0;
-                } else {
+                }
+                else
+                {
                     startLength -= pathLength;
                     endLength -= pathLength;
                 }
                 i++;
             }
-        } break;
+        }
+        break;
 
-        case 2: {
-            for (auto path : subPaths) {
+        case 2:
+        {
+            for (auto path : subPaths)
+            {
                 auto pathLength = path->length();
                 auto startLength = pathLength * (start() + renderOffset);
                 auto endLength = pathLength * (end() + renderOffset);
-                if (endLength < startLength) {
+                if (endLength < startLength)
+                {
                     auto length = startLength;
                     startLength = endLength;
                     endLength = length;
                 }
 
-                if (startLength > pathLength) {
+                if (startLength > pathLength)
+                {
                     startLength -= pathLength;
                     endLength -= pathLength;
                 }
                 path->trim(startLength, endLength, true, m_TrimmedPath.get());
-                while (endLength > pathLength) {
+                while (endLength > pathLength)
+                {
                     startLength = 0;
                     endLength -= pathLength;
                     path->trim(startLength, endLength, true, m_TrimmedPath.get());
                 }
             }
-        } break;
+        }
+        break;
     }
 
     m_RenderPath = m_TrimmedPath.get();
     return m_RenderPath;
 }
 
-void TrimPath::invalidateEffect() {
+void TrimPath::invalidateEffect()
+{
     m_RenderPath = nullptr;
     auto stroke = parent()->as<Stroke>();
     stroke->parent()->addDirt(ComponentDirt::Paint);
diff --git a/src/shapes/path.cpp b/src/shapes/path.cpp
index 6ef2c0f..bcb4aca 100644
--- a/src/shapes/path.cpp
+++ b/src/shapes/path.cpp
@@ -14,7 +14,8 @@
 /// radius. Based on "natural rounding" https://observablehq.com/@daformat/rounding-polygon-corners
 static float computeIdealControlPointDistance(const Vec2D& toPrev,
                                               const Vec2D& toNext,
-                                              float radius) {
+                                              float radius)
+{
     // Get the angle between next and prev
     float angle = fabs(atan2(Vec2D::cross(toPrev, toNext), Vec2D::dot(toPrev, toNext)));
 
@@ -23,9 +24,11 @@
                     (angle < math::PI / 2 ? 1 + cos(angle) : 2.0f - sin(angle)));
 }
 
-StatusCode Path::onAddedClean(CoreContext* context) {
+StatusCode Path::onAddedClean(CoreContext* context)
+{
     StatusCode code = Super::onAddedClean(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
 
@@ -33,7 +36,8 @@
     for (auto currentParent = parent(); currentParent != nullptr;
          currentParent = currentParent->parent())
     {
-        if (currentParent->is<Shape>()) {
+        if (currentParent->is<Shape>())
+        {
             m_Shape = currentParent->as<Shape>();
             m_Shape->addPath(this);
             return StatusCode::Ok;
@@ -43,7 +47,8 @@
     return StatusCode::MissingObject;
 }
 
-void Path::buildDependencies() {
+void Path::buildDependencies()
+{
     Super::buildDependencies();
     // Make sure this is called once the shape has all of the paints added
     // (paints get added during the added cycle so buildDependencies is a good
@@ -55,13 +60,15 @@
 
 const Mat2D& Path::pathTransform() const { return worldTransform(); }
 
-void Path::buildPath(CommandPath& commandPath) const {
+void Path::buildPath(CommandPath& commandPath) const
+{
 
     const bool isClosed = isPathClosed();
     const std::vector<PathVertex*>& vertices = m_Vertices;
 
     auto length = vertices.size();
-    if (length < 2) {
+    if (length < 2)
+    {
         return;
     }
     auto firstPoint = vertices[0];
@@ -73,18 +80,22 @@
     Vec2D start, startIn;
     bool startIsCubic;
 
-    if (firstPoint->is<CubicVertex>()) {
+    if (firstPoint->is<CubicVertex>())
+    {
         auto cubic = firstPoint->as<CubicVertex>();
         startIsCubic = prevIsCubic = true;
         startIn = cubic->renderIn();
         out = cubic->renderOut();
         start = cubic->renderTranslation();
         commandPath.move(start);
-    } else {
+    }
+    else
+    {
         startIsCubic = prevIsCubic = false;
         auto point = *firstPoint->as<StraightVertex>();
         auto radius = point.radius();
-        if (radius > 0.0f) {
+        if (radius > 0.0f)
+        {
             auto prev = vertices[length - 1];
 
             Vec2D pos = point.renderTranslation();
@@ -114,16 +125,20 @@
             out = Vec2D::scaleAndAdd(pos, toNext, renderRadius);
             commandPath.cubic(outPoint, inPoint, out);
             prevIsCubic = false;
-        } else {
+        }
+        else
+        {
             startIn = start = out = point.renderTranslation();
             commandPath.move(out);
         }
     }
 
-    for (size_t i = 1; i < length; i++) {
+    for (size_t i = 1; i < length; i++)
+    {
         auto vertex = vertices[i];
 
-        if (vertex->is<CubicVertex>()) {
+        if (vertex->is<CubicVertex>())
+        {
             auto cubic = vertex->as<CubicVertex>();
             auto inPoint = cubic->renderIn();
             auto translation = cubic->renderTranslation();
@@ -132,11 +147,14 @@
 
             prevIsCubic = true;
             out = cubic->renderOut();
-        } else {
+        }
+        else
+        {
             auto point = *vertex->as<StraightVertex>();
             Vec2D pos = point.renderTranslation();
             auto radius = point.radius();
-            if (radius > 0.0f) {
+            if (radius > 0.0f)
+            {
                 auto prev = vertices[i - 1];
                 Vec2D toPrev = (prev->is<CubicVertex>() ? prev->as<CubicVertex>()->renderOut()
                                                         : prev->renderTranslation()) -
@@ -156,9 +174,12 @@
                     computeIdealControlPointDistance(toPrev, toNext, renderRadius);
 
                 Vec2D translation = Vec2D::scaleAndAdd(pos, toPrev, renderRadius);
-                if (prevIsCubic) {
+                if (prevIsCubic)
+                {
                     commandPath.cubic(out, translation, translation);
-                } else {
+                }
+                else
+                {
                     commandPath.line(translation);
                 }
 
@@ -167,45 +188,59 @@
                 out = Vec2D::scaleAndAdd(pos, toNext, renderRadius);
                 commandPath.cubic(outPoint, inPoint, out);
                 prevIsCubic = false;
-            } else if (prevIsCubic) {
+            }
+            else if (prevIsCubic)
+            {
                 commandPath.cubic(out, pos, pos);
 
                 prevIsCubic = false;
                 out = pos;
-            } else {
+            }
+            else
+            {
                 out = pos;
                 commandPath.line(out);
             }
         }
     }
-    if (isClosed) {
-        if (prevIsCubic || startIsCubic) {
+    if (isClosed)
+    {
+        if (prevIsCubic || startIsCubic)
+        {
             commandPath.cubic(out, startIn, start);
-        } else {
+        }
+        else
+        {
             commandPath.line(start);
         }
         commandPath.close();
     }
 }
 
-void Path::markPathDirty() {
+void Path::markPathDirty()
+{
     addDirt(ComponentDirt::Path);
-    if (m_Shape != nullptr) {
+    if (m_Shape != nullptr)
+    {
         m_Shape->pathChanged();
     }
 }
 
-void Path::onDirty(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::WorldTransform) && m_Shape != nullptr) {
+void Path::onDirty(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::WorldTransform) && m_Shape != nullptr)
+    {
         m_Shape->pathChanged();
     }
 }
 
-void Path::update(ComponentDirt value) {
+void Path::update(ComponentDirt value)
+{
     Super::update(value);
 
     assert(m_CommandPath != nullptr);
-    if (hasDirt(value, ComponentDirt::Path)) {
+    if (hasDirt(value, ComponentDirt::Path))
+    {
         // Build path doesn't explicitly reset because we use it to concatenate
         // multiple built paths into a single command path (like the hit
         // tester).
@@ -223,7 +258,8 @@
 
 #ifdef ENABLE_QUERY_FLAT_VERTICES
 
-class DisplayCubicVertex : public CubicVertex {
+class DisplayCubicVertex : public CubicVertex
+{
 public:
     DisplayCubicVertex(const Vec2D& in, const Vec2D& out, const Vec2D& translation)
 
@@ -240,15 +276,18 @@
     void computeOut() override {}
 };
 
-FlattenedPath* Path::makeFlat(bool transformToParent) {
-    if (m_Vertices.empty()) {
+FlattenedPath* Path::makeFlat(bool transformToParent)
+{
+    if (m_Vertices.empty())
+    {
         return nullptr;
     }
 
     // Path transform always puts the path into world space.
     auto transform = pathTransform();
 
-    if (transformToParent && parent()->is<TransformComponent>()) {
+    if (transformToParent && parent()->is<TransformComponent>())
+    {
         // Put the transform in parent space.
         auto world = parent()->as<TransformComponent>()->worldTransform();
         transform = world.invertOrIdentity() * transform;
@@ -258,13 +297,17 @@
     auto length = m_Vertices.size();
     PathVertex* previous = isPathClosed() ? m_Vertices[length - 1] : nullptr;
     bool deletePrevious = false;
-    for (size_t i = 0; i < length; i++) {
+    for (size_t i = 0; i < length; i++)
+    {
         auto vertex = m_Vertices[i];
 
-        switch (vertex->coreType()) {
-            case StraightVertex::typeKey: {
+        switch (vertex->coreType())
+        {
+            case StraightVertex::typeKey:
+            {
                 auto point = *vertex->as<StraightVertex>();
-                if (point.radius() > 0.0f && (isPathClosed() || (i != 0 && i != length - 1))) {
+                if (point.radius() > 0.0f && (isPathClosed() || (i != 0 && i != length - 1)))
+                {
                     auto next = m_Vertices[(i + 1) % length];
 
                     Vec2D prevPoint = previous->is<CubicVertex>()
@@ -300,7 +343,8 @@
                     auto v2 = new DisplayCubicVertex(in, translation, translation);
 
                     flat->addVertex(v2, transform);
-                    if (deletePrevious) {
+                    if (deletePrevious)
+                    {
                         delete previous;
                     }
                     previous = v2;
@@ -310,7 +354,8 @@
                 [[fallthrough]];
             }
             default:
-                if (deletePrevious) {
+                if (deletePrevious)
+                {
                     delete previous;
                 }
                 previous = vertex;
@@ -319,16 +364,19 @@
                 break;
         }
     }
-    if (deletePrevious) {
+    if (deletePrevious)
+    {
         delete previous;
     }
     return flat;
 }
 
-void FlattenedPath::addVertex(PathVertex* vertex, const Mat2D& transform) {
+void FlattenedPath::addVertex(PathVertex* vertex, const Mat2D& transform)
+{
     // To make this easy and relatively clean we just transform the vertices.
     // Requires the vertex to be passed in as a clone.
-    if (vertex->is<CubicVertex>()) {
+    if (vertex->is<CubicVertex>())
+    {
         auto cubic = vertex->as<CubicVertex>();
 
         // Cubics need to be transformed so we create a Display version which
@@ -339,7 +387,9 @@
 
         auto displayCubic = new DisplayCubicVertex(in, out, translation);
         m_Vertices.push_back(displayCubic);
-    } else {
+    }
+    else
+    {
         auto point = new PathVertex();
         Vec2D translation = transform * vertex->renderTranslation();
         point->x(translation.x);
@@ -348,8 +398,10 @@
     }
 }
 
-FlattenedPath::~FlattenedPath() {
-    for (auto vertex : m_Vertices) {
+FlattenedPath::~FlattenedPath()
+{
+    for (auto vertex : m_Vertices)
+    {
         delete vertex;
     }
 }
diff --git a/src/shapes/path_composer.cpp b/src/shapes/path_composer.cpp
index 7c2d20d..e10373e 100644
--- a/src/shapes/path_composer.cpp
+++ b/src/shapes/path_composer.cpp
@@ -10,38 +10,52 @@
 
 PathComposer::PathComposer(Shape* shape) : m_Shape(shape) {}
 
-void PathComposer::buildDependencies() {
+void PathComposer::buildDependencies()
+{
     assert(m_Shape != nullptr);
     m_Shape->addDependent(this);
-    for (auto path : m_Shape->paths()) {
+    for (auto path : m_Shape->paths())
+    {
         path->addDependent(this);
     }
 }
 
-void PathComposer::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::Path)) {
+void PathComposer::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::Path))
+    {
         auto space = m_Shape->pathSpace();
-        if ((space & PathSpace::Local) == PathSpace::Local) {
-            if (m_LocalPath == nullptr) {
+        if ((space & PathSpace::Local) == PathSpace::Local)
+        {
+            if (m_LocalPath == nullptr)
+            {
                 m_LocalPath = m_Shape->makeCommandPath(PathSpace::Local);
-            } else {
+            }
+            else
+            {
                 m_LocalPath->reset();
             }
             auto world = m_Shape->worldTransform();
             Mat2D inverseWorld = world.invertOrIdentity();
             // Get all the paths into local shape space.
-            for (auto path : m_Shape->paths()) {
+            for (auto path : m_Shape->paths())
+            {
                 const auto localTransform = inverseWorld * path->pathTransform();
                 m_LocalPath->addPath(path->commandPath(), localTransform);
             }
         }
-        if ((space & PathSpace::World) == PathSpace::World) {
-            if (m_WorldPath == nullptr) {
+        if ((space & PathSpace::World) == PathSpace::World)
+        {
+            if (m_WorldPath == nullptr)
+            {
                 m_WorldPath = m_Shape->makeCommandPath(PathSpace::World);
-            } else {
+            }
+            else
+            {
                 m_WorldPath->reset();
             }
-            for (auto path : m_Shape->paths()) {
+            for (auto path : m_Shape->paths())
+            {
                 const Mat2D& transform = path->pathTransform();
                 m_WorldPath->addPath(path->commandPath(), transform);
             }
diff --git a/src/shapes/path_vertex.cpp b/src/shapes/path_vertex.cpp
index 6e070b3..637ec0a 100644
--- a/src/shapes/path_vertex.cpp
+++ b/src/shapes/path_vertex.cpp
@@ -3,20 +3,25 @@
 
 using namespace rive;
 
-StatusCode PathVertex::onAddedDirty(CoreContext* context) {
+StatusCode PathVertex::onAddedDirty(CoreContext* context)
+{
     StatusCode code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
-    if (!parent()->is<Path>()) {
+    if (!parent()->is<Path>())
+    {
         return StatusCode::MissingObject;
     }
     parent()->as<Path>()->addVertex(this);
     return StatusCode::Ok;
 }
 
-void PathVertex::markGeometryDirty() {
-    if (parent() == nullptr) {
+void PathVertex::markGeometryDirty()
+{
+    if (parent() == nullptr)
+    {
         // This is an acceptable condition as the parametric paths create points
         // that are not part of the core context.
         return;
diff --git a/src/shapes/points_path.cpp b/src/shapes/points_path.cpp
index a902f5a..1d20b03 100644
--- a/src/shapes/points_path.cpp
+++ b/src/shapes/points_path.cpp
@@ -6,30 +6,38 @@
 
 using namespace rive;
 
-void PointsPath::buildDependencies() {
+void PointsPath::buildDependencies()
+{
     Super::buildDependencies();
-    if (skin() != nullptr) {
+    if (skin() != nullptr)
+    {
         skin()->addDependent(this);
     }
 }
 
-const Mat2D& PointsPath::pathTransform() const {
-    if (skin() != nullptr) {
+const Mat2D& PointsPath::pathTransform() const
+{
+    if (skin() != nullptr)
+    {
         static Mat2D identity;
         return identity;
     }
     return worldTransform();
 }
 
-void PointsPath::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::Path) && skin() != nullptr) {
+void PointsPath::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::Path) && skin() != nullptr)
+    {
         skin()->deform(Span<Vertex*>((Vertex**)m_Vertices.data(), m_Vertices.size()));
     }
     Super::update(value);
 }
 
-void PointsPath::markPathDirty() {
-    if (skin() != nullptr) {
+void PointsPath::markPathDirty()
+{
+    if (skin() != nullptr)
+    {
         skin()->addDirt(ComponentDirt::Skin);
     }
     Super::markPathDirty();
diff --git a/src/shapes/polygon.cpp b/src/shapes/polygon.cpp
index aabfef4..1bb12f6 100644
--- a/src/shapes/polygon.cpp
+++ b/src/shapes/polygon.cpp
@@ -16,7 +16,8 @@
 
 std::size_t Polygon::vertexCount() { return points(); }
 
-void Polygon::buildPolygon() {
+void Polygon::buildPolygon()
+{
     auto halfWidth = width() / 2;
     auto halfHeight = height() / 2;
 
@@ -26,7 +27,8 @@
     auto angle = -math::PI / 2;
     auto inc = 2 * -math::PI / points();
 
-    for (StraightVertex& vertex : m_PolygonVertices) {
+    for (StraightVertex& vertex : m_PolygonVertices)
+    {
         vertex.x(ox + cos(angle) * halfWidth);
         vertex.y(oy + sin(angle) * halfHeight);
         vertex.radius(cornerRadius());
@@ -34,12 +36,16 @@
     }
 }
 
-void Polygon::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::Path)) {
-        if (m_PolygonVertices.size() != vertexCount()) {
+void Polygon::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::Path))
+    {
+        if (m_PolygonVertices.size() != vertexCount())
+        {
             m_PolygonVertices.resize(vertexCount());
             m_Vertices.clear();
-            for (StraightVertex& vertex : m_PolygonVertices) {
+            for (StraightVertex& vertex : m_PolygonVertices)
+            {
                 m_Vertices.push_back(&vertex);
             }
         }
diff --git a/src/shapes/rectangle.cpp b/src/shapes/rectangle.cpp
index 84eed38..e70cb0e 100644
--- a/src/shapes/rectangle.cpp
+++ b/src/shapes/rectangle.cpp
@@ -2,7 +2,8 @@
 
 using namespace rive;
 
-Rectangle::Rectangle() {
+Rectangle::Rectangle()
+{
     addVertex(&m_Vertex1);
     addVertex(&m_Vertex2);
     addVertex(&m_Vertex3);
@@ -14,8 +15,10 @@
 void Rectangle::cornerRadiusBLChanged() { markPathDirty(); }
 void Rectangle::cornerRadiusBRChanged() { markPathDirty(); }
 
-void Rectangle::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::Path)) {
+void Rectangle::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::Path))
+    {
         auto radius = cornerRadiusTL();
         auto link = linkCornerRadius();
 
diff --git a/src/shapes/shape.cpp b/src/shapes/shape.cpp
index 6851c73..cdcc59b 100644
--- a/src/shapes/shape.cpp
+++ b/src/shapes/shape.cpp
@@ -11,40 +11,50 @@
 
 Shape::Shape() : m_PathComposer(this) {}
 
-void Shape::addPath(Path* path) {
+void Shape::addPath(Path* path)
+{
     // Make sure the path is not already in the shape.
     assert(std::find(m_Paths.begin(), m_Paths.end(), path) == m_Paths.end());
     m_Paths.push_back(path);
 }
 
-void Shape::update(ComponentDirt value) {
+void Shape::update(ComponentDirt value)
+{
     Super::update(value);
 
-    if (hasDirt(value, ComponentDirt::RenderOpacity)) {
-        for (auto shapePaint : m_ShapePaints) {
+    if (hasDirt(value, ComponentDirt::RenderOpacity))
+    {
+        for (auto shapePaint : m_ShapePaints)
+        {
             shapePaint->renderOpacity(renderOpacity());
         }
     }
 }
 
-void Shape::pathChanged() {
+void Shape::pathChanged()
+{
     m_PathComposer.addDirt(ComponentDirt::Path, true);
     invalidateStrokeEffects();
 }
 
-void Shape::draw(Renderer* renderer) {
-    if (renderOpacity() == 0.0f) {
+void Shape::draw(Renderer* renderer)
+{
+    if (renderOpacity() == 0.0f)
+    {
         return;
     }
     auto shouldRestore = clip(renderer);
 
-    for (auto shapePaint : m_ShapePaints) {
-        if (!shapePaint->isVisible()) {
+    for (auto shapePaint : m_ShapePaints)
+    {
+        if (!shapePaint->isVisible())
+        {
             continue;
         }
         renderer->save();
         bool paintsInLocal = (shapePaint->pathSpace() & PathSpace::Local) == PathSpace::Local;
-        if (paintsInLocal) {
+        if (paintsInLocal)
+        {
             renderer->transform(worldTransform());
         }
         shapePaint->draw(renderer,
@@ -52,23 +62,28 @@
         renderer->restore();
     }
 
-    if (shouldRestore) {
+    if (shouldRestore)
+    {
         renderer->restore();
     }
 }
 
-bool Shape::hitTest(const IAABB& area) const {
+bool Shape::hitTest(const IAABB& area) const
+{
     HitTestCommandPath tester(area);
 
-    for (auto path : m_Paths) {
+    for (auto path : m_Paths)
+    {
         tester.setXform(path->pathTransform());
         path->buildPath(tester);
     }
     return tester.wasHit();
 }
 
-Core* Shape::hitTest(HitInfo* hinfo, const Mat2D& xform) {
-    if (renderOpacity() == 0.0f) {
+Core* Shape::hitTest(HitInfo* hinfo, const Mat2D& xform)
+{
+    if (renderOpacity() == 0.0f)
+    {
         return nullptr;
     }
 
@@ -76,40 +91,50 @@
 
     const bool shapeIsLocal = (pathSpace() & PathSpace::Local) == PathSpace::Local;
 
-    for (auto rit = m_ShapePaints.rbegin(); rit != m_ShapePaints.rend(); ++rit) {
+    for (auto rit = m_ShapePaints.rbegin(); rit != m_ShapePaints.rend(); ++rit)
+    {
         auto shapePaint = *rit;
-        if (shapePaint->isTranslucent()) {
+        if (shapePaint->isTranslucent())
+        {
             continue;
         }
-        if (!shapePaint->isVisible()) {
+        if (!shapePaint->isVisible())
+        {
             continue;
         }
 
         auto paintIsLocal = (shapePaint->pathSpace() & PathSpace::Local) == PathSpace::Local;
 
         auto mx = xform;
-        if (paintIsLocal) {
+        if (paintIsLocal)
+        {
             mx *= worldTransform();
         }
 
         HitTestCommandPath tester(hinfo->area);
 
-        for (auto path : m_Paths) {
-            if (shapeIsLocal) {
+        for (auto path : m_Paths)
+        {
+            if (shapeIsLocal)
+            {
                 tester.setXform(xform * path->pathTransform());
-            } else {
+            }
+            else
+            {
                 tester.setXform(mx * path->pathTransform());
             }
             path->buildPath(tester);
         }
-        if (tester.wasHit()) {
+        if (tester.wasHit())
+        {
             return this;
         }
     }
     return nullptr;
 }
 
-void Shape::buildDependencies() {
+void Shape::buildDependencies()
+{
     // Make sure to propagate the call to PathComposer as it's no longer part of
     // Core and owned only by the Shape.
     m_PathComposer.buildDependencies();
@@ -119,16 +144,19 @@
     // Set the blend mode on all the shape paints. If we ever animate this
     // property, we'll need to update it in the update cycle/mark dirty when the
     // blend mode changes.
-    for (auto paint : m_ShapePaints) {
+    for (auto paint : m_ShapePaints)
+    {
         paint->blendMode(blendMode());
     }
 }
 
 void Shape::addDefaultPathSpace(PathSpace space) { m_DefaultPathSpace |= space; }
 
-StatusCode Shape::onAddedDirty(CoreContext* context) {
+StatusCode Shape::onAddedDirty(CoreContext* context)
+{
     auto code = Super::onAddedDirty(context);
-    if (code != StatusCode::Ok) {
+    if (code != StatusCode::Ok)
+    {
         return code;
     }
     // This ensures context propagates to path composer too.
diff --git a/src/shapes/shape_paint_container.cpp b/src/shapes/shape_paint_container.cpp
index 0f22230..bb8d5c5 100644
--- a/src/shapes/shape_paint_container.cpp
+++ b/src/shapes/shape_paint_container.cpp
@@ -10,33 +10,43 @@
 
 using namespace rive;
 
-ShapePaintContainer* ShapePaintContainer::from(Component* component) {
-    switch (component->coreType()) {
-        case Artboard::typeKey: return component->as<Artboard>();
-        case Shape::typeKey: return component->as<Shape>();
+ShapePaintContainer* ShapePaintContainer::from(Component* component)
+{
+    switch (component->coreType())
+    {
+        case Artboard::typeKey:
+            return component->as<Artboard>();
+        case Shape::typeKey:
+            return component->as<Shape>();
     }
     return nullptr;
 }
 
 void ShapePaintContainer::addPaint(ShapePaint* paint) { m_ShapePaints.push_back(paint); }
 
-PathSpace ShapePaintContainer::pathSpace() const {
+PathSpace ShapePaintContainer::pathSpace() const
+{
     PathSpace space = m_DefaultPathSpace;
-    for (auto paint : m_ShapePaints) {
+    for (auto paint : m_ShapePaints)
+    {
         space |= paint->pathSpace();
     }
     return space;
 }
 
-void ShapePaintContainer::invalidateStrokeEffects() {
-    for (auto paint : m_ShapePaints) {
-        if (paint->is<Stroke>()) {
+void ShapePaintContainer::invalidateStrokeEffects()
+{
+    for (auto paint : m_ShapePaints)
+    {
+        if (paint->is<Stroke>())
+        {
             paint->as<Stroke>()->invalidateEffects();
         }
     }
 }
 
-std::unique_ptr<CommandPath> ShapePaintContainer::makeCommandPath(PathSpace space) {
+std::unique_ptr<CommandPath> ShapePaintContainer::makeCommandPath(PathSpace space)
+{
     // Force a render path if we specifically request to use it for clipping or
     // this shape is used for clipping.
     bool needForRender =
@@ -44,24 +54,34 @@
 
     bool needForEffects = false;
 
-    for (auto paint : m_ShapePaints) {
-        if (space != PathSpace::Neither && (space & paint->pathSpace()) != space) {
+    for (auto paint : m_ShapePaints)
+    {
+        if (space != PathSpace::Neither && (space & paint->pathSpace()) != space)
+        {
             continue;
         }
 
-        if (paint->is<Stroke>() && paint->as<Stroke>()->hasStrokeEffect()) {
+        if (paint->is<Stroke>() && paint->as<Stroke>()->hasStrokeEffect())
+        {
             needForEffects = true;
-        } else {
+        }
+        else
+        {
             needForRender = true;
         }
     }
 
     auto factory = getArtboard()->factory();
-    if (needForEffects && needForRender) {
+    if (needForEffects && needForRender)
+    {
         return std::unique_ptr<CommandPath>(new RenderMetricsPath(factory->makeEmptyRenderPath()));
-    } else if (needForEffects) {
+    }
+    else if (needForEffects)
+    {
         return std::unique_ptr<CommandPath>(new OnlyMetricsPath());
-    } else {
+    }
+    else
+    {
         return std::unique_ptr<CommandPath>(factory->makeEmptyRenderPath());
     }
 }
diff --git a/src/shapes/star.cpp b/src/shapes/star.cpp
index 2705eb1..20723d8 100644
--- a/src/shapes/star.cpp
+++ b/src/shapes/star.cpp
@@ -12,7 +12,8 @@
 
 std::size_t Star::vertexCount() { return points() * 2; }
 
-void Star::buildPolygon() {
+void Star::buildPolygon()
+{
     auto halfWidth = width() / 2;
     auto halfHeight = height() / 2;
     auto innerHalfWidth = width() * innerRadius() / 2;
@@ -24,7 +25,8 @@
     auto angle = -math::PI / 2;
     auto inc = 2 * math::PI / length;
 
-    for (std::size_t i = 0; i < length; i += 2) {
+    for (std::size_t i = 0; i < length; i += 2)
+    {
         {
             StraightVertex& vertex = m_PolygonVertices[i];
             vertex.x(ox + cos(angle) * halfWidth);
diff --git a/src/shapes/triangle.cpp b/src/shapes/triangle.cpp
index 5c9553d..6b9ca51 100644
--- a/src/shapes/triangle.cpp
+++ b/src/shapes/triangle.cpp
@@ -4,14 +4,17 @@
 
 using namespace rive;
 
-Triangle::Triangle() {
+Triangle::Triangle()
+{
     addVertex(&m_Vertex1);
     addVertex(&m_Vertex2);
     addVertex(&m_Vertex3);
 }
 
-void Triangle::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::Path)) {
+void Triangle::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::Path))
+    {
         auto ox = -originX() * width();
         auto oy = -originY() * height();
 
diff --git a/src/shapes/vertex.cpp b/src/shapes/vertex.cpp
index a7c6890..477122d 100644
--- a/src/shapes/vertex.cpp
+++ b/src/shapes/vertex.cpp
@@ -2,8 +2,10 @@
 
 using namespace rive;
 
-Vec2D Vertex::renderTranslation() {
-    if (hasWeight()) {
+Vec2D Vertex::renderTranslation()
+{
+    if (hasWeight())
+    {
         return m_Weight->translation();
     }
     return Vec2D(x(), y());
@@ -12,7 +14,8 @@
 void Vertex::xChanged() { markGeometryDirty(); }
 void Vertex::yChanged() { markGeometryDirty(); }
 
-void Vertex::deform(const Mat2D& worldTransform, const float* boneTransforms) {
+void Vertex::deform(const Mat2D& worldTransform, const float* boneTransforms)
+{
     m_Weight->translation() = Weight::deform(Vec2D(x(), y()),
                                              m_Weight->indices(),
                                              m_Weight->values(),
diff --git a/src/simple_array.cpp b/src/simple_array.cpp
index cd4ecfc..095ee22 100644
--- a/src/simple_array.cpp
+++ b/src/simple_array.cpp
@@ -1,11 +1,14 @@
 #ifdef TESTING
 #include "rive/simple_array.hpp"
-namespace rive {
-namespace SimpleArrayTesting {
+namespace rive
+{
+namespace SimpleArrayTesting
+{
 int mallocCount = 0;
 int reallocCount = 0;
 int freeCount = 0;
-void resetCounters() {
+void resetCounters()
+{
     mallocCount = 0;
     reallocCount = 0;
     freeCount = 0;
diff --git a/src/text/line_breaker.cpp b/src/text/line_breaker.cpp
index d862e41..190cac0 100644
--- a/src/text/line_breaker.cpp
+++ b/src/text/line_breaker.cpp
@@ -10,25 +10,33 @@
 void RenderGlyphLine::ComputeLineSpacing(Span<RenderGlyphLine> lines,
                                          Span<const RenderGlyphRun> runs,
                                          float width,
-                                         RenderTextAlign align) {
+                                         RenderTextAlign align)
+{
 
     float maxLineWidth = 0.0f;
-    if (autowidth(width)) {
-        for (auto& line : lines) {
+    if (autowidth(width))
+    {
+        for (auto& line : lines)
+        {
             auto lineWidth =
                 runs[line.endRun].xpos[line.endIndex] - runs[line.startRun].xpos[line.startIndex];
-            if (lineWidth > maxLineWidth) {
+            if (lineWidth > maxLineWidth)
+            {
                 maxLineWidth = lineWidth;
             }
         }
-    } else {
+    }
+    else
+    {
         maxLineWidth = width;
     }
     float Y = 0; // top of our frame
-    for (auto& line : lines) {
+    for (auto& line : lines)
+    {
         float asc = 0;
         float des = 0;
-        for (int i = line.startRun; i <= line.endRun; ++i) {
+        for (int i = line.startRun; i <= line.endRun; ++i)
+        {
             const auto& run = runs[i];
 
             asc = std::min(asc, run.font->lineMetrics().ascent * run.size);
@@ -41,9 +49,14 @@
         line.bottom = Y;
         auto lineWidth =
             runs[line.endRun].xpos[line.endIndex] - runs[line.startRun].xpos[line.startIndex];
-        switch (align) {
-            case RenderTextAlign::right: line.startX = maxLineWidth - lineWidth; break;
-            case RenderTextAlign::left: line.startX = 0; break;
+        switch (align)
+        {
+            case RenderTextAlign::right:
+                line.startX = maxLineWidth - lineWidth;
+                break;
+            case RenderTextAlign::left:
+                line.startX = 0;
+                break;
             case RenderTextAlign::center:
                 line.startX = maxLineWidth / 2.0f - lineWidth / 2.0f;
                 break;
@@ -51,17 +64,21 @@
     }
 }
 
-struct WordMarker {
+struct WordMarker
+{
     const RenderGlyphRun* run;
     uint32_t index;
 
-    bool next(Span<const RenderGlyphRun> runs) {
+    bool next(Span<const RenderGlyphRun> runs)
+    {
         index += 2;
-        while (index >= run->breaks.size()) {
+        while (index >= run->breaks.size())
+        {
 
             index -= run->breaks.size();
             run++;
-            if (run == runs.end()) {
+            if (run == runs.end())
+            {
                 return false;
             }
         }
@@ -69,44 +86,60 @@
     }
 };
 
-class RunIterator {
+class RunIterator
+{
     Span<const RenderGlyphRun> m_runs;
     const RenderGlyphRun* m_run;
     uint32_t m_index;
 
 public:
     RunIterator(Span<const RenderGlyphRun> runs, const RenderGlyphRun* run, uint32_t index) :
-        m_runs(runs), m_run(run), m_index(index) {}
+        m_runs(runs), m_run(run), m_index(index)
+    {}
 
-    bool back() {
-        if (m_index == 0) {
-            if (m_run == m_runs.begin()) {
+    bool back()
+    {
+        if (m_index == 0)
+        {
+            if (m_run == m_runs.begin())
+            {
                 return false;
             }
             m_run--;
-            if (m_run->glyphs.size() == 0) {
+            if (m_run->glyphs.size() == 0)
+            {
                 m_index = 0;
                 return back();
-            } else {
+            }
+            else
+            {
                 m_index = m_run->glyphs.size() == 0 ? 0 : (uint32_t)m_run->glyphs.size() - 1;
             }
-        } else {
+        }
+        else
+        {
             m_index--;
         }
         return true;
     }
 
-    bool forward() {
-        if (m_index == m_run->glyphs.size()) {
-            if (m_run == m_runs.end()) {
+    bool forward()
+    {
+        if (m_index == m_run->glyphs.size())
+        {
+            if (m_run == m_runs.end())
+            {
                 return false;
             }
             m_run++;
             m_index = 0;
-            if (m_index == m_run->glyphs.size()) {
+            if (m_index == m_run->glyphs.size())
+            {
                 return forward();
             }
-        } else {
+        }
+        else
+        {
             m_index++;
         }
         return true;
@@ -122,13 +155,15 @@
 
 std::vector<RenderGlyphLine> RenderGlyphLine::BreakLines(Span<const RenderGlyphRun> runs,
                                                          float width,
-                                                         RenderTextAlign align) {
+                                                         RenderTextAlign align)
+{
 
     float maxLineWidth = autowidth(width) ? std::numeric_limits<float>::max() : width;
 
     std::vector<RenderGlyphLine> lines;
 
-    if (runs.empty()) {
+    if (runs.empty())
+    {
         return lines;
     }
 
@@ -144,14 +179,18 @@
     uint32_t lastEndIndex = end.index;
     uint32_t startBreakIndex = start.run->breaks[start.index];
     float x = end.run->xpos[breakIndex];
-    while (true) {
-        if (advanceWord) {
+    while (true)
+    {
+        if (advanceWord)
+        {
             lastEndIndex = end.index;
 
-            if (!start.next(runs)) {
+            if (!start.next(runs))
+            {
                 break;
             }
-            if (!end.next(runs)) {
+            if (!end.next(runs))
+            {
                 break;
             }
 
@@ -162,42 +201,54 @@
             x = end.run->xpos[breakIndex];
         }
 
-        if (breakIndex != startBreakIndex && x > limit) {
+        if (breakIndex != startBreakIndex && x > limit)
+        {
             uint32_t startRun = (uint32_t)(start.run - runs.begin());
 
             // A whole word overflowed, break until we can no longer break (or
             // it fits).
-            if (line.startRun == startRun && line.startIndex == startBreakIndex) {
+            if (line.startRun == startRun && line.startIndex == startBreakIndex)
+            {
                 bool canBreakMore = true;
-                while (canBreakMore && x > limit) {
+                while (canBreakMore && x > limit)
+                {
 
                     RunIterator lineStart =
                         RunIterator(runs, runs.begin() + line.startRun, line.startIndex);
                     RunIterator lineEnd = RunIterator(runs, end.run, end.run->breaks[end.index]);
 
                     // Look for the next character that doesn't overflow.
-                    while (true) {
-                        if (!lineEnd.back()) {
+                    while (true)
+                    {
+                        if (!lineEnd.back())
+                        {
                             // Hit the start of the text, can't go back.
                             canBreakMore = false;
                             break;
-                        } else if (lineEnd.x() <= limit) {
-                            if (lineStart == lineEnd && !lineEnd.forward()) {
+                        }
+                        else if (lineEnd.x() <= limit)
+                        {
+                            if (lineStart == lineEnd && !lineEnd.forward())
+                            {
                                 // Hit the start of the line and could not
                                 // go forward to consume a single character.
                                 // We can't break any further.
                                 canBreakMore = false;
-                            } else {
+                            }
+                            else
+                            {
                                 line.endRun = (uint32_t)(lineEnd.run() - runs.begin());
                                 line.endIndex = lineEnd.index();
                             }
                             break;
                         }
                     }
-                    if (canBreakMore) {
+                    if (canBreakMore)
+                    {
                         // Add the line and push the limit out.
                         limit = lineEnd.x() + maxLineWidth;
-                        if (!line.empty()) {
+                        if (!line.empty())
+                        {
                             lines.push_back(line);
                         }
                         // Setup the next line.
@@ -205,23 +256,29 @@
                                                lineEnd.index());
                     }
                 }
-            } else {
+            }
+            else
+            {
                 // word overflowed, knock it to a new line
                 auto startX = start.run->xpos[start.run->breaks[start.index]];
                 limit = startX + maxLineWidth;
 
-                if (!line.empty() || start.index - lastEndIndex > 1) {
+                if (!line.empty() || start.index - lastEndIndex > 1)
+                {
                     lines.push_back(line);
                 }
 
                 line = RenderGlyphLine(startRun, startBreakIndex);
             }
-        } else {
+        }
+        else
+        {
             line.endRun = (uint32_t)(end.run - runs.begin());
             line.endIndex = end.run->breaks[end.index];
             advanceWord = true;
             // Forced BR.
-            if (breakIndex == startBreakIndex) {
+            if (breakIndex == startBreakIndex)
+            {
                 lines.push_back(line);
                 auto startX = start.run->xpos[start.run->breaks[start.index]];
                 limit = startX + maxLineWidth;
@@ -230,7 +287,8 @@
         }
     }
     // Don't add a line that starts/ends at the same spot.
-    if (!line.empty()) {
+    if (!line.empty())
+    {
         lines.push_back(line);
     }
 
diff --git a/src/text/renderfont_hb.cpp b/src/text/renderfont_hb.cpp
index 7e97f2a..5b536aa 100644
--- a/src/text/renderfont_hb.cpp
+++ b/src/text/renderfont_hb.cpp
@@ -16,19 +16,23 @@
 // Initialized to null. Client can set this to a callback.
 HBRenderFont::FallbackProc HBRenderFont::gFallbackProc;
 
-rive::rcp<rive::RenderFont> HBRenderFont::Decode(rive::Span<const uint8_t> span) {
+rive::rcp<rive::RenderFont> HBRenderFont::Decode(rive::Span<const uint8_t> span)
+{
     auto blob = hb_blob_create_or_fail((const char*)span.data(),
                                        (unsigned)span.size(),
                                        HB_MEMORY_MODE_DUPLICATE,
                                        nullptr,
                                        nullptr);
-    if (blob) {
+    if (blob)
+    {
         auto face = hb_face_create(blob, 0);
         hb_blob_destroy(blob);
-        if (face) {
+        if (face)
+        {
             auto font = hb_font_create(face);
             hb_face_destroy(face);
-            if (font) {
+            if (font)
+            {
                 return rive::rcp<rive::RenderFont>(new HBRenderFont(font));
             }
         }
@@ -41,50 +45,57 @@
 constexpr int kStdScale = 2048;
 constexpr float gInvScale = 1.0f / kStdScale;
 
-extern "C" {
-static void
-rpath_move_to(hb_draw_funcs_t*, void* rpath, hb_draw_state_t*, float x, float y, void*) {
-    ((rive::RawPath*)rpath)->moveTo(x * gInvScale, -y * gInvScale);
-}
-static void
-rpath_line_to(hb_draw_funcs_t*, void* rpath, hb_draw_state_t*, float x1, float y1, void*) {
-    ((rive::RawPath*)rpath)->lineTo(x1 * gInvScale, -y1 * gInvScale);
-}
-static void rpath_quad_to(hb_draw_funcs_t*,
-                          void* rpath,
-                          hb_draw_state_t*,
-                          float x1,
-                          float y1,
-                          float x2,
-                          float y2,
-                          void*) {
-    ((rive::RawPath*)rpath)
-        ->quadTo(x1 * gInvScale, -y1 * gInvScale, x2 * gInvScale, -y2 * gInvScale);
-}
-static void rpath_cubic_to(hb_draw_funcs_t*,
-                           void* rpath,
-                           hb_draw_state_t*,
-                           float x1,
-                           float y1,
-                           float x2,
-                           float y2,
-                           float x3,
-                           float y3,
-                           void*) {
-    ((rive::RawPath*)rpath)
-        ->cubicTo(x1 * gInvScale,
-                  -y1 * gInvScale,
-                  x2 * gInvScale,
-                  -y2 * gInvScale,
-                  x3 * gInvScale,
-                  -y3 * gInvScale);
-}
-static void rpath_close(hb_draw_funcs_t*, void* rpath, hb_draw_state_t*, void*) {
-    ((rive::RawPath*)rpath)->close();
-}
+extern "C"
+{
+    static void
+    rpath_move_to(hb_draw_funcs_t*, void* rpath, hb_draw_state_t*, float x, float y, void*)
+    {
+        ((rive::RawPath*)rpath)->moveTo(x * gInvScale, -y * gInvScale);
+    }
+    static void
+    rpath_line_to(hb_draw_funcs_t*, void* rpath, hb_draw_state_t*, float x1, float y1, void*)
+    {
+        ((rive::RawPath*)rpath)->lineTo(x1 * gInvScale, -y1 * gInvScale);
+    }
+    static void rpath_quad_to(hb_draw_funcs_t*,
+                              void* rpath,
+                              hb_draw_state_t*,
+                              float x1,
+                              float y1,
+                              float x2,
+                              float y2,
+                              void*)
+    {
+        ((rive::RawPath*)rpath)
+            ->quadTo(x1 * gInvScale, -y1 * gInvScale, x2 * gInvScale, -y2 * gInvScale);
+    }
+    static void rpath_cubic_to(hb_draw_funcs_t*,
+                               void* rpath,
+                               hb_draw_state_t*,
+                               float x1,
+                               float y1,
+                               float x2,
+                               float y2,
+                               float x3,
+                               float y3,
+                               void*)
+    {
+        ((rive::RawPath*)rpath)
+            ->cubicTo(x1 * gInvScale,
+                      -y1 * gInvScale,
+                      x2 * gInvScale,
+                      -y2 * gInvScale,
+                      x3 * gInvScale,
+                      -y3 * gInvScale);
+    }
+    static void rpath_close(hb_draw_funcs_t*, void* rpath, hb_draw_state_t*, void*)
+    {
+        ((rive::RawPath*)rpath)->close();
+    }
 }
 
-static rive::RenderFont::LineMetrics make_lmx(hb_font_t* font) {
+static rive::RenderFont::LineMetrics make_lmx(hb_font_t* font)
+{
     // premable on font...
     hb_ot_font_set_funcs(font);
     hb_font_set_scale(font, kStdScale, kStdScale);
@@ -95,8 +106,7 @@
 }
 
 HBRenderFont::HBRenderFont(hb_font_t* font) :
-    RenderFont(make_lmx(font)),
-    m_Font(font) // we just take ownership, no need to call reference()
+    RenderFont(make_lmx(font)), m_Font(font) // we just take ownership, no need to call reference()
 {
     m_DrawFuncs = hb_draw_funcs_create();
     hb_draw_funcs_set_move_to_func(m_DrawFuncs, rpath_move_to, nullptr, nullptr);
@@ -107,21 +117,25 @@
     hb_draw_funcs_make_immutable(m_DrawFuncs);
 }
 
-HBRenderFont::~HBRenderFont() {
+HBRenderFont::~HBRenderFont()
+{
     hb_draw_funcs_destroy(m_DrawFuncs);
     hb_font_destroy(m_Font);
 }
 
-std::vector<rive::RenderFont::Axis> HBRenderFont::getAxes() const {
+std::vector<rive::RenderFont::Axis> HBRenderFont::getAxes() const
+{
     auto face = hb_font_get_face(m_Font);
     std::vector<rive::RenderFont::Axis> axes;
 
     const int count = hb_ot_var_get_axis_count(face);
-    if (count > 0) {
+    if (count > 0)
+    {
         axes.resize(count);
 
         hb_ot_var_axis_info_t info;
-        for (int i = 0; i < count; ++i) {
+        for (int i = 0; i < count; ++i)
+        {
             unsigned n = 1;
             hb_ot_var_get_axis_infos(face, i, &n, &info);
             assert(n == 1);
@@ -133,7 +147,8 @@
     return axes;
 }
 
-std::vector<rive::RenderFont::Coord> HBRenderFont::getCoords() const {
+std::vector<rive::RenderFont::Coord> HBRenderFont::getCoords() const
+{
     auto axes = this->getAxes();
     //  const int count = (int)axes.size();
 
@@ -141,15 +156,18 @@
     const float* values = hb_font_get_var_coords_design(m_Font, &length);
 
     std::vector<rive::RenderFont::Coord> coords(length);
-    for (unsigned i = 0; i < length; ++i) {
+    for (unsigned i = 0; i < length; ++i)
+    {
         coords[i] = {axes[i].tag, values[i]};
     }
     return coords;
 }
 
-rive::rcp<rive::RenderFont> HBRenderFont::makeAtCoords(rive::Span<const Coord> coords) const {
+rive::rcp<rive::RenderFont> HBRenderFont::makeAtCoords(rive::Span<const Coord> coords) const
+{
     AutoSTArray<16, hb_variation_t> vars(coords.size());
-    for (size_t i = 0; i < coords.size(); ++i) {
+    for (size_t i = 0; i < coords.size(); ++i)
+    {
         vars[i] = {coords[i].axis, coords[i].value};
     }
     auto font = hb_font_create_sub_font(m_Font);
@@ -157,7 +175,8 @@
     return rive::rcp<rive::RenderFont>(new HBRenderFont(font));
 }
 
-rive::RawPath HBRenderFont::getPath(rive::GlyphID glyph) const {
+rive::RawPath HBRenderFont::getPath(rive::GlyphID glyph) const
+{
     rive::RawPath rpath;
     hb_font_get_glyph_shape(m_Font, glyph, m_DrawFuncs, &rpath);
     return rpath;
@@ -174,7 +193,8 @@
 
 static rive::RenderGlyphRun shape_run(const rive::Unichar text[],
                                       const rive::RenderTextRun& tr,
-                                      unsigned textOffset) {
+                                      unsigned textOffset)
+{
     hb_buffer_t* buf = hb_buffer_create();
     hb_buffer_add_utf32(buf, text, tr.unicharCount, 0, tr.unicharCount);
 
@@ -196,7 +216,8 @@
     gr.size = tr.size;
 
     const float scale = tr.size / kStdScale;
-    for (unsigned int i = 0; i < glyph_count; i++) {
+    for (unsigned int i = 0; i < glyph_count; i++)
+    {
         //            hb_position_t x_offset  = glyph_pos[i].x_offset;
         //            hb_position_t y_offset  = glyph_pos[i].y_offset;
 
@@ -211,7 +232,8 @@
 
 static rive::RenderGlyphRun extract_subset(const rive::RenderGlyphRun& orig,
                                            size_t start,
-                                           size_t end) {
+                                           size_t end)
+{
     auto count = end - start;
     rive::RenderGlyphRun subset(rive::SimpleArray<rive::GlyphID>(&orig.glyphs[start], count),
                                 rive::SimpleArray<uint32_t>(&orig.textIndices[start], count),
@@ -226,23 +248,30 @@
 static void perform_fallback(rive::rcp<rive::RenderFont> fallbackFont,
                              rive::SimpleArrayBuilder<rive::RenderGlyphRun>& gruns,
                              const rive::Unichar text[],
-                             const rive::RenderGlyphRun& orig) {
+                             const rive::RenderGlyphRun& orig)
+{
     assert(orig.glyphs.size() > 0);
 
     const size_t count = orig.glyphs.size();
     size_t startI = 0;
-    while (startI < count) {
+    while (startI < count)
+    {
         size_t endI = startI + 1;
-        if (orig.glyphs[startI] == 0) {
-            while (endI < count && orig.glyphs[endI] == 0) {
+        if (orig.glyphs[startI] == 0)
+        {
+            while (endI < count && orig.glyphs[endI] == 0)
+            {
                 ++endI;
             }
             auto textStart = orig.textIndices[startI];
             auto textCount = orig.textIndices[endI - 1] - textStart + 1;
             auto tr = rive::RenderTextRun{fallbackFont, orig.size, textCount};
             gruns.add(shape_run(&text[textStart], tr, textStart));
-        } else {
-            while (endI < count && orig.glyphs[endI] != 0) {
+        }
+        else
+        {
+            while (endI < count && orig.glyphs[endI] != 0)
+            {
                 ++endI;
             }
             gruns.add(extract_subset(orig, startI, endI));
@@ -253,29 +282,37 @@
 
 rive::SimpleArray<rive::RenderGlyphRun>
 HBRenderFont::onShapeText(rive::Span<const rive::Unichar> text,
-                          rive::Span<const rive::RenderTextRun> truns) const {
+                          rive::Span<const rive::RenderTextRun> truns) const
+{
     rive::SimpleArrayBuilder<rive::RenderGlyphRun> gruns(truns.size());
 
     /////////////////
 
     uint32_t unicharIndex = 0;
-    for (const auto& tr : truns) {
+    for (const auto& tr : truns)
+    {
         auto gr = shape_run(&text[unicharIndex], tr, unicharIndex);
         unicharIndex += tr.unicharCount;
 
         auto end = gr.glyphs.end();
         auto iter = std::find(gr.glyphs.begin(), end, 0);
-        if (!gFallbackProc || iter == end) {
+        if (!gFallbackProc || iter == end)
+        {
             gruns.add(std::move(gr));
-        } else {
+        }
+        else
+        {
             // found at least 1 zero in glyphs, so need to perform font-fallback
             size_t index = iter - gr.glyphs.begin();
             rive::Unichar missing = text[gr.textIndices[index]];
             // todo: consider sending more chars if that helps choose a font
             auto fallback = gFallbackProc({&missing, 1});
-            if (fallback) {
+            if (fallback)
+            {
                 perform_fallback(fallback, gruns, text.data(), gr);
-            } else {
+            }
+            else
+            {
                 gruns.add(std::move(gr)); // oh well, just keep the missing glyphs
             }
         }
@@ -283,8 +320,10 @@
 
     // now turn the advances (widths) we stored in xpos[] into actual x-positions
     float pos = 0;
-    for (auto& gr : gruns) {
-        for (auto& xp : gr.xpos) {
+    for (auto& gr : gruns)
+    {
+        for (auto& xp : gr.xpos)
+        {
             float adv = xp;
             xp = pos;
             pos += adv;
diff --git a/src/transform_component.cpp b/src/transform_component.cpp
index 4c62c54..5f52169 100644
--- a/src/transform_component.cpp
+++ b/src/transform_component.cpp
@@ -6,55 +6,71 @@
 
 using namespace rive;
 
-StatusCode TransformComponent::onAddedClean(CoreContext* context) {
+StatusCode TransformComponent::onAddedClean(CoreContext* context)
+{
     m_ParentTransformComponent = parent() != nullptr && parent()->is<WorldTransformComponent>()
                                      ? parent()->as<WorldTransformComponent>()
                                      : nullptr;
     return StatusCode::Ok;
 }
 
-void TransformComponent::buildDependencies() {
-    if (parent() != nullptr) {
+void TransformComponent::buildDependencies()
+{
+    if (parent() != nullptr)
+    {
         parent()->addDependent(this);
     }
 }
 
-void TransformComponent::markTransformDirty() {
-    if (!addDirt(ComponentDirt::Transform)) {
+void TransformComponent::markTransformDirty()
+{
+    if (!addDirt(ComponentDirt::Transform))
+    {
         return;
     }
     markWorldTransformDirty();
 }
 
-void TransformComponent::updateTransform() {
+void TransformComponent::updateTransform()
+{
     m_Transform = Mat2D::fromRotation(rotation());
     m_Transform[4] = x();
     m_Transform[5] = y();
     m_Transform.scaleByValues(scaleX(), scaleY());
 }
 
-void TransformComponent::updateWorldTransform() {
-    if (m_ParentTransformComponent != nullptr) {
+void TransformComponent::updateWorldTransform()
+{
+    if (m_ParentTransformComponent != nullptr)
+    {
         m_WorldTransform = m_ParentTransformComponent->m_WorldTransform * m_Transform;
-    } else {
+    }
+    else
+    {
         m_WorldTransform = m_Transform;
     }
 
-    for (auto constraint : m_Constraints) {
+    for (auto constraint : m_Constraints)
+    {
         constraint->constrain(this);
     }
 }
 
-void TransformComponent::update(ComponentDirt value) {
-    if (hasDirt(value, ComponentDirt::Transform)) {
+void TransformComponent::update(ComponentDirt value)
+{
+    if (hasDirt(value, ComponentDirt::Transform))
+    {
         updateTransform();
     }
-    if (hasDirt(value, ComponentDirt::WorldTransform)) {
+    if (hasDirt(value, ComponentDirt::WorldTransform))
+    {
         updateWorldTransform();
     }
-    if (hasDirt(value, ComponentDirt::RenderOpacity)) {
+    if (hasDirt(value, ComponentDirt::RenderOpacity))
+    {
         m_RenderOpacity = opacity();
-        if (m_ParentTransformComponent != nullptr) {
+        if (m_ParentTransformComponent != nullptr)
+        {
             m_RenderOpacity *= m_ParentTransformComponent->childOpacity();
         }
     }
@@ -68,6 +84,7 @@
 void TransformComponent::scaleXChanged() { markTransformDirty(); }
 void TransformComponent::scaleYChanged() { markTransformDirty(); }
 
-void TransformComponent::addConstraint(Constraint* constraint) {
+void TransformComponent::addConstraint(Constraint* constraint)
+{
     m_Constraints.push_back(constraint);
 }
diff --git a/src/world_transform_component.cpp b/src/world_transform_component.cpp
index 0a0ea78..a132577 100644
--- a/src/world_transform_component.cpp
+++ b/src/world_transform_component.cpp
@@ -7,7 +7,8 @@
 
 float WorldTransformComponent::childOpacity() { return opacity(); }
 
-void WorldTransformComponent::markWorldTransformDirty() {
+void WorldTransformComponent::markWorldTransformDirty()
+{
     addDirt(ComponentDirt::WorldTransform, true);
 }
 
diff --git a/tess/include/rive/math/mat4.hpp b/tess/include/rive/math/mat4.hpp
index 83ecb5e..e8b7066 100644
--- a/tess/include/rive/math/mat4.hpp
+++ b/tess/include/rive/math/mat4.hpp
@@ -3,9 +3,11 @@
 
 #include <cstddef>
 
-namespace rive {
+namespace rive
+{
 class Mat2D;
-class Mat4 {
+class Mat4
+{
 private:
     float m_Buffer[16];
 
@@ -18,7 +20,8 @@
                 0.0f, 0.0f, 1.0f, 0.0f, 
                 0.0f, 0.0f, 0.0f, 1.0f,
             // clang-format on
-        } {}
+        }
+    {}
     Mat4(const Mat4& copy) = default;
 
     // Construct a 4x4 Matrix with the provided elements stored in row-major
@@ -38,7 +41,8 @@
                 x3, y3, z3, w3,
                 tx, ty, tz, tw,
             // clang-format on
-        } {}
+        }
+    {}
 
     Mat4(const Mat2D& mat2d);
 
@@ -47,12 +51,14 @@
     float& operator[](std::size_t idx) { return m_Buffer[idx]; }
     const float& operator[](std::size_t idx) const { return m_Buffer[idx]; }
 
-    Mat4& operator*=(const Mat4& rhs) {
+    Mat4& operator*=(const Mat4& rhs)
+    {
         *this = Mat4::multiply(*this, rhs);
         return *this;
     }
 
-    Mat4& operator*=(const Mat2D& rhs) {
+    Mat4& operator*=(const Mat2D& rhs)
+    {
         *this = Mat4::multiply(*this, rhs);
         return *this;
     }
diff --git a/tess/include/rive/tess/contour_stroke.hpp b/tess/include/rive/tess/contour_stroke.hpp
index 915f7d2..3f70413 100644
--- a/tess/include/rive/tess/contour_stroke.hpp
+++ b/tess/include/rive/tess/contour_stroke.hpp
@@ -7,13 +7,15 @@
 #include <vector>
 #include <cstdint>
 
-namespace rive {
+namespace rive
+{
 class SegmentedContour;
 
 ///
 /// Builds a triangle strip vertex buffer from a SegmentedContour.
 ///
-class ContourStroke {
+class ContourStroke
+{
 protected:
     std::vector<Vec2D> m_TriangleStrip;
     std::vector<std::size_t> m_Offsets;
diff --git a/tess/include/rive/tess/segmented_contour.hpp b/tess/include/rive/tess/segmented_contour.hpp
index 07b4657..4195cb1 100644
--- a/tess/include/rive/tess/segmented_contour.hpp
+++ b/tess/include/rive/tess/segmented_contour.hpp
@@ -6,11 +6,13 @@
 #include "rive/math/aabb.hpp"
 #include <vector>
 
-namespace rive {
+namespace rive
+{
 class RawPath;
 
 /// Utilty for converting a RawPath into a contour segments.
-class SegmentedContour {
+class SegmentedContour
+{
 private:
     std::vector<Vec2D> m_contourPoints;
 
diff --git a/tess/include/rive/tess/sokol/sokol_factory.hpp b/tess/include/rive/tess/sokol/sokol_factory.hpp
index 93b8b27..2d9812a 100644
--- a/tess/include/rive/tess/sokol/sokol_factory.hpp
+++ b/tess/include/rive/tess/sokol/sokol_factory.hpp
@@ -7,9 +7,11 @@
 
 #include "rive/factory.hpp"
 
-namespace rive {
+namespace rive
+{
 
-class SokolFactory : public Factory {
+class SokolFactory : public Factory
+{
 
 public:
     SokolFactory();
diff --git a/tess/include/rive/tess/sokol/sokol_tess_renderer.hpp b/tess/include/rive/tess/sokol/sokol_tess_renderer.hpp
index eddf07c..4a6f0d8 100644
--- a/tess/include/rive/tess/sokol/sokol_tess_renderer.hpp
+++ b/tess/include/rive/tess/sokol/sokol_tess_renderer.hpp
@@ -8,10 +8,12 @@
 #include "rive/tess/tess_renderer.hpp"
 #include "sokol_gfx.h"
 
-namespace rive {
+namespace rive
+{
 
 // The actual graphics device image.
-class SokolRenderImageResource : public RefCnt<SokolRenderImageResource> {
+class SokolRenderImageResource : public RefCnt<SokolRenderImageResource>
+{
 private:
     sg_image m_gpuResource;
 
@@ -25,7 +27,8 @@
 
 // The unique render image associated with a given source Rive asset. Can be stored in sub-region of
 // an actual graphics device image (SokolRenderImageResource).
-class SokolRenderImage : public RenderImage {
+class SokolRenderImage : public RenderImage
+{
 private:
     rcp<SokolRenderImageResource> m_gpuImage;
     sg_buffer m_vertexBuffer;
@@ -47,7 +50,8 @@
     sg_buffer uvBuffer() const { return m_uvBuffer; }
 };
 
-class SokolTessRenderer : public TessRenderer {
+class SokolTessRenderer : public TessRenderer
+{
 private:
     static const std::size_t maxClippingPaths = 16;
     sg_pipeline m_meshPipeline;
diff --git a/tess/include/rive/tess/sub_path.hpp b/tess/include/rive/tess/sub_path.hpp
index 31a4cc3..7c9259a 100644
--- a/tess/include/rive/tess/sub_path.hpp
+++ b/tess/include/rive/tess/sub_path.hpp
@@ -4,12 +4,14 @@
 #include "rive/renderer.hpp"
 #include "rive/math/mat2d.hpp"
 
-namespace rive {
+namespace rive
+{
 ///
 /// A reference to a sub-path added to a TessRenderPath with its relative
 /// transform.
 ///
-class SubPath {
+class SubPath
+{
 private:
     RenderPath* m_Path;
     Mat2D m_Transform;
diff --git a/tess/include/rive/tess/tess_render_path.hpp b/tess/include/rive/tess/tess_render_path.hpp
index a3e24ec..c831de7 100644
--- a/tess/include/rive/tess/tess_render_path.hpp
+++ b/tess/include/rive/tess/tess_render_path.hpp
@@ -8,10 +8,12 @@
 #include "rive/tess/sub_path.hpp"
 #include "earcut.hpp"
 
-namespace rive {
+namespace rive
+{
 
 class ContourStroke;
-class TessRenderPath : public RenderPath {
+class TessRenderPath : public RenderPath
+{
 private:
     // TessRenderPath stores a RawPath so that it can use utility classes
     // that will work off of RawPath (like segmenting the contour and then
diff --git a/tess/include/rive/tess/tess_renderer.hpp b/tess/include/rive/tess/tess_renderer.hpp
index 0771656..1122527 100644
--- a/tess/include/rive/tess/tess_renderer.hpp
+++ b/tess/include/rive/tess/tess_renderer.hpp
@@ -12,14 +12,17 @@
 #include <vector>
 #include <list>
 
-namespace rive {
+namespace rive
+{
 
-struct RenderState {
+struct RenderState
+{
     Mat2D transform;
     std::vector<SubPath> clipPaths;
 };
 
-class TessRenderer : public Renderer {
+class TessRenderer : public Renderer
+{
 protected:
     Mat4 m_Projection;
     std::list<RenderState> m_Stack;
diff --git a/tess/src/contour_stroke.cpp b/tess/src/contour_stroke.cpp
index 6711804..0a782b3 100644
--- a/tess/src/contour_stroke.cpp
+++ b/tess/src/contour_stroke.cpp
@@ -9,15 +9,18 @@
 
 static const int subdivisionArcLength = 4.0f;
 
-void ContourStroke::reset() {
+void ContourStroke::reset()
+{
     m_TriangleStrip.clear();
     m_Offsets.clear();
 }
 
 void ContourStroke::resetRenderOffset() { m_RenderOffset = 0; }
 
-bool ContourStroke::nextRenderOffset(std::size_t& start, std::size_t& end) {
-    if (m_RenderOffset == m_Offsets.size()) {
+bool ContourStroke::nextRenderOffset(std::size_t& start, std::size_t& end)
+{
+    if (m_RenderOffset == m_Offsets.size())
+    {
         return false;
     }
     start = m_RenderOffset == 0 ? 0 : m_Offsets[m_RenderOffset - 1];
@@ -29,12 +32,14 @@
                             bool isClosed,
                             StrokeJoin join,
                             StrokeCap cap,
-                            float strokeWidth) {
+                            float strokeWidth)
+{
     auto contourPoints = contour->contourPoints();
     std::vector<Vec2D> points(contourPoints.begin(), contourPoints.end());
 
     auto pointCount = points.size();
-    if (pointCount < 2) {
+    if (pointCount < 2)
+    {
         return;
     }
     auto startOffset = m_TriangleStrip.size();
@@ -49,9 +54,12 @@
     Vec2D lastA = lastPoint + perpendicularStrokeDiff;
     Vec2D lastB = lastPoint - perpendicularStrokeDiff;
 
-    if (!isClosed) {
-        switch (cap) {
-            case StrokeCap::square: {
+    if (!isClosed)
+    {
+        switch (cap)
+        {
+            case StrokeCap::square:
+            {
                 Vec2D strokeDiff = lastDiffNormalized * strokeWidth;
                 Vec2D squareA = lastA - strokeDiff;
                 Vec2D squareB = lastB - strokeDiff;
@@ -59,7 +67,8 @@
                 m_TriangleStrip.push_back(squareB);
                 break;
             }
-            case StrokeCap::round: {
+            case StrokeCap::round:
+            {
                 Vec2D capDirection = Vec2D(-lastDiffNormalized.y, lastDiffNormalized.x);
                 float arcLength = std::abs(math::PI * strokeWidth);
                 int steps = (int)std::ceil(arcLength / subdivisionArcLength);
@@ -67,7 +76,8 @@
                 float inc = math::PI / steps;
                 float angle = angleTo;
                 // make sure to draw the full cap due triangle strip
-                for (int j = 0; j <= steps; j++) {
+                for (int j = 0; j <= steps; j++)
+                {
                     m_TriangleStrip.push_back(lastPoint);
                     m_TriangleStrip.push_back(Vec2D(lastPoint.x + std::cos(angle) * strokeWidth,
                                                     lastPoint.y + std::sin(angle) * strokeWidth));
@@ -75,7 +85,8 @@
                 }
                 break;
             }
-            default: break;
+            default:
+                break;
         }
     }
     m_TriangleStrip.push_back(lastA);
@@ -84,15 +95,19 @@
     pointCount -= isClosed ? 1 : 0;
     std::size_t adjustedPointCount = isClosed ? pointCount + 1 : pointCount;
 
-    for (std::size_t i = 1; i < adjustedPointCount; i++) {
+    for (std::size_t i = 1; i < adjustedPointCount; i++)
+    {
         const Vec2D& point = points[i % pointCount];
         Vec2D diff, diffNormalized, next;
         float length;
-        if (i < adjustedPointCount - 1 || isClosed) {
+        if (i < adjustedPointCount - 1 || isClosed)
+        {
             diff = (next = points[(i + 1) % pointCount]) - point;
             length = diff.length();
             diffNormalized = diff / length;
-        } else {
+        }
+        else
+        {
             diff = lastDiff;
             next = point;
             length = lastLength;
@@ -116,26 +131,34 @@
         bool bevel = join == StrokeJoin::miter ? dot < 0.1f : dot < 0.999f;
 
         // Scale bisector to match stroke size.
-        if (dot > 0.000001f) {
+        if (dot > 0.000001f)
+        {
             float scale = 1.0f / dot * strokeWidth;
             float limit = lengthLimit / strokeWidth;
-            if (dot * limit * limit < 1.0f) {
+            if (dot * limit * limit < 1.0f)
+            {
                 bevelInner = true;
             }
             bisector *= scale;
-        } else {
+        }
+        else
+        {
             bisector *= strokeWidth;
         }
 
-        if (!bevel) {
+        if (!bevel)
+        {
             Vec2D c = point + bisector;
             Vec2D d = point - bisector;
 
-            if (!bevelInner) {
+            if (!bevelInner)
+            {
                 // Normal mitered edge.
                 m_TriangleStrip.push_back(c);
                 m_TriangleStrip.push_back(d);
-            } else if (cross <= 0) {
+            }
+            else if (cross <= 0)
+            {
                 // Overlap the inner (in this case right) edge (sometimes called
                 // miter inner).
                 Vec2D c1 = point + Vec2D(lastDiffNormalized.y * -strokeWidth,
@@ -147,7 +170,9 @@
                 m_TriangleStrip.push_back(d);
                 m_TriangleStrip.push_back(c2);
                 m_TriangleStrip.push_back(d);
-            } else {
+            }
+            else
+            {
                 // Overlap the inner (in this case left) edge (sometimes called
                 // miter inner).
                 Vec2D d1 = point - Vec2D(lastDiffNormalized.y * -strokeWidth,
@@ -160,19 +185,25 @@
                 m_TriangleStrip.push_back(c);
                 m_TriangleStrip.push_back(d2);
             }
-        } else {
+        }
+        else
+        {
             Vec2D ldPStroke =
                 Vec2D(lastDiffNormalized.y * -strokeWidth, lastDiffNormalized.x * strokeWidth);
             Vec2D dPStroke = Vec2D(diffNormalized.y * -strokeWidth, diffNormalized.x * strokeWidth);
-            if (cross <= 0) {
+            if (cross <= 0)
+            {
                 // Bevel the outer (left in this case) edge.
                 Vec2D a1;
                 Vec2D a2;
 
-                if (bevelInner) {
+                if (bevelInner)
+                {
                     a1 = point + ldPStroke;
                     a2 = point + dPStroke;
-                } else {
+                }
+                else
+                {
                     a1 = point + bisector;
                     a2 = a1;
                 }
@@ -182,13 +213,15 @@
 
                 m_TriangleStrip.push_back(a1);
                 m_TriangleStrip.push_back(b);
-                if (join == StrokeJoin::round) {
+                if (join == StrokeJoin::round)
+                {
                     const Vec2D& pivot = bevelInner ? point : a1;
                     Vec2D toPrev = bn - point;
                     Vec2D toNext = b - point;
                     float angleFrom = std::atan2(toPrev.y, toPrev.x);
                     float angleTo = std::atan2(toNext.y, toNext.x);
-                    if (angleTo > angleFrom) {
+                    if (angleTo > angleFrom)
+                    {
                         angleTo -= math::PI * 2.0f;
                     }
                     float range = angleTo - angleFrom;
@@ -197,7 +230,8 @@
 
                     float inc = range / steps;
                     float angle = angleTo - inc;
-                    for (int j = 0; j < steps - 1; j++) {
+                    for (int j = 0; j < steps - 1; j++)
+                    {
                         m_TriangleStrip.push_back(pivot);
                         m_TriangleStrip.emplace_back(
                             Vec2D(point.x + std::cos(angle) * strokeWidth,
@@ -208,14 +242,19 @@
                 }
                 m_TriangleStrip.push_back(a2);
                 m_TriangleStrip.push_back(bn);
-            } else {
+            }
+            else
+            {
                 // Bevel the outer (right in this case) edge.
                 Vec2D b1;
                 Vec2D b2;
-                if (bevelInner) {
+                if (bevelInner)
+                {
                     b1 = point - ldPStroke;
                     b2 = point - dPStroke;
-                } else {
+                }
+                else
+                {
                     b1 = point - bisector;
                     b2 = b1;
                 }
@@ -226,13 +265,15 @@
                 m_TriangleStrip.push_back(a);
                 m_TriangleStrip.push_back(b1);
 
-                if (join == StrokeJoin::round) {
+                if (join == StrokeJoin::round)
+                {
                     const Vec2D& pivot = bevelInner ? point : b1;
                     Vec2D toPrev = a - point;
                     Vec2D toNext = an - point;
                     float angleFrom = std::atan2(toPrev.y, toPrev.x);
                     float angleTo = std::atan2(toNext.y, toNext.x);
-                    if (angleTo > angleFrom) {
+                    if (angleTo > angleFrom)
+                    {
                         angleTo -= math::PI * 2.0f;
                     }
 
@@ -242,7 +283,8 @@
                     float inc = range / steps;
 
                     float angle = angleFrom + inc;
-                    for (int j = 0; j < steps - 1; j++) {
+                    for (int j = 0; j < steps - 1; j++)
+                    {
                         m_TriangleStrip.emplace_back(
                             Vec2D(point.x + std::cos(angle) * strokeWidth,
                                   point.y + std::sin(angle) * strokeWidth));
@@ -260,13 +302,18 @@
         lastDiffNormalized = diffNormalized;
     }
 
-    if (isClosed) {
+    if (isClosed)
+    {
         auto last = m_TriangleStrip.size() - 1;
         m_TriangleStrip[startOffset] = m_TriangleStrip[last - 1];
         m_TriangleStrip[startOffset + 1] = m_TriangleStrip[last];
-    } else {
-        switch (cap) {
-            case StrokeCap::square: {
+    }
+    else
+    {
+        switch (cap)
+        {
+            case StrokeCap::square:
+            {
                 auto l = m_TriangleStrip.size();
 
                 Vec2D strokeDiff = lastDiffNormalized * strokeWidth;
@@ -277,7 +324,8 @@
                 m_TriangleStrip.push_back(squareB);
                 break;
             }
-            case StrokeCap::round: {
+            case StrokeCap::round:
+            {
                 Vec2D capDirection = Vec2D(-lastDiffNormalized.y, lastDiffNormalized.x);
                 float arcLength = std::abs(math::PI * strokeWidth);
                 int steps = (int)std::ceil(arcLength / subdivisionArcLength);
@@ -285,7 +333,8 @@
                 float inc = math::PI / steps;
                 float angle = angleTo;
                 // make sure to draw the full cap due triangle strip
-                for (int j = 0; j <= steps; j++) {
+                for (int j = 0; j <= steps; j++)
+                {
                     m_TriangleStrip.push_back(lastPoint);
                     m_TriangleStrip.push_back(Vec2D(lastPoint.x + std::cos(angle) * strokeWidth,
                                                     lastPoint.y + std::sin(angle) * strokeWidth));
@@ -293,7 +342,8 @@
                 }
                 break;
             }
-            default: break;
+            default:
+                break;
         }
     }
 
diff --git a/tess/src/math/mat4.cpp b/tess/src/math/mat4.cpp
index 8f54dad..6e1da14 100644
--- a/tess/src/math/mat4.cpp
+++ b/tess/src/math/mat4.cpp
@@ -12,9 +12,11 @@
         0.0f, 0.0f, 1.0f, 0.0f, 
         mat2d[4], mat2d[5], 0.0f, 1.0f,
         // clang-format on
-    } {}
+    }
+{}
 
-Mat4 Mat4::multiply(const Mat4& a, const Mat4& b) {
+Mat4 Mat4::multiply(const Mat4& a, const Mat4& b)
+{
     return {
         // clang-format off
         b[0] * a[0] + b[1] * a[4] + b[2] * a[8] + b[3] * a[12],
@@ -40,7 +42,8 @@
     };
 }
 
-Mat4 Mat4::multiply(const Mat4& a, const Mat2D& b) {
+Mat4 Mat4::multiply(const Mat4& a, const Mat2D& b)
+{
     return {
         // clang-format off
         b[0] * a[0] + b[1] * a[4],
diff --git a/tess/src/segmented_contour.cpp b/tess/src/segmented_contour.cpp
index c47dc53..00110ac 100644
--- a/tess/src/segmented_contour.cpp
+++ b/tess/src/segmented_contour.cpp
@@ -7,22 +7,26 @@
 SegmentedContour::SegmentedContour(float threshold) :
     m_bounds(AABB::forExpansion()),
     m_threshold(threshold),
-    m_thresholdSquared(threshold * threshold) {}
+    m_thresholdSquared(threshold * threshold)
+{}
 
 float SegmentedContour::threshold() const { return m_threshold; }
-void SegmentedContour::threshold(float value) {
+void SegmentedContour::threshold(float value)
+{
     m_threshold = value;
     m_thresholdSquared = value * value;
 }
 const AABB& SegmentedContour::bounds() const { return m_bounds; }
-void SegmentedContour::addVertex(Vec2D vertex) {
+void SegmentedContour::addVertex(Vec2D vertex)
+{
     m_contourPoints.push_back(vertex);
     AABB::expandTo(m_bounds, vertex);
 }
 
 const std::size_t SegmentedContour::contourSize() const { return m_contourPoints.size(); }
 
-const Span<const Vec2D> SegmentedContour::contourPoints(uint32_t endOffset) const {
+const Span<const Vec2D> SegmentedContour::contourPoints(uint32_t endOffset) const
+{
     assert(endOffset <= m_contourPoints.size());
     return Span<const Vec2D>(m_contourPoints.data(), m_contourPoints.size() - endOffset);
 }
@@ -32,8 +36,10 @@
                                     const Vec2D& toIn,
                                     const Vec2D& to,
                                     float t1,
-                                    float t2) {
-    if (CubicUtilities::shouldSplitCubic(from, fromOut, toIn, to, m_threshold)) {
+                                    float t2)
+{
+    if (CubicUtilities::shouldSplitCubic(from, fromOut, toIn, to, m_threshold))
+    {
         float halfT = (t1 + t2) / 2.0f;
 
         Vec2D hull[6];
@@ -42,23 +48,33 @@
         segmentCubic(from, hull[0], hull[3], hull[5], t1, halfT);
 
         segmentCubic(hull[5], hull[4], hull[2], to, halfT, t2);
-    } else {
-        if (Vec2D::distanceSquared(from, to) > m_thresholdSquared) {
+    }
+    else
+    {
+        if (Vec2D::distanceSquared(from, to) > m_thresholdSquared)
+        {
             addVertex(Vec2D(CubicUtilities::cubicAt(t2, from.x, fromOut.x, toIn.x, to.x),
                             CubicUtilities::cubicAt(t2, from.y, fromOut.y, toIn.y, to.y)));
         }
     }
 }
 
-void SegmentedContour::contour(const RawPath& rawPath, const Mat2D& transform) {
+void SegmentedContour::contour(const RawPath& rawPath, const Mat2D& transform)
+{
     m_contourPoints.clear();
 
     // Possible perf consideration: could add second path that doesn't transform
     // if transform is the identity.
-    for (const auto [verb, pts] : rawPath) {
-        switch (verb) {
-            case PathVerb::move: addVertex(transform * pts[0]); break;
-            case PathVerb::line: addVertex(transform * pts[1]); break;
+    for (const auto [verb, pts] : rawPath)
+    {
+        switch (verb)
+        {
+            case PathVerb::move:
+                addVertex(transform * pts[0]);
+                break;
+            case PathVerb::line:
+                addVertex(transform * pts[1]);
+                break;
             case PathVerb::cubic:
                 segmentCubic(transform * pts[0],
                              transform * pts[1],
@@ -67,7 +83,8 @@
                              0.0f,
                              1.0f);
                 break;
-            case PathVerb::close: break;
+            case PathVerb::close:
+                break;
             case PathVerb::quad:
                 // TODO: not currently used by render paths, however might be
                 // necessary for fonts.
diff --git a/tess/src/sokol/sokol_factory.cpp b/tess/src/sokol/sokol_factory.cpp
index af87e34..0b990dc 100644
--- a/tess/src/sokol/sokol_factory.cpp
+++ b/tess/src/sokol/sokol_factory.cpp
@@ -2,7 +2,8 @@
 
 using namespace rive;
 
-class NoOpRenderPaint : public RenderPaint {
+class NoOpRenderPaint : public RenderPaint
+{
 public:
     void color(unsigned int value) override {}
     void style(RenderPaintStyle value) override {}
@@ -14,7 +15,8 @@
     void invalidateStroke() override {}
 };
 
-class NoOpRenderPath : public RenderPath {
+class NoOpRenderPath : public RenderPath
+{
 public:
     void reset() override {}
 
diff --git a/tess/src/sokol/sokol_tess_renderer.cpp b/tess/src/sokol/sokol_tess_renderer.cpp
index f37539e..d1e3166 100644
--- a/tess/src/sokol/sokol_tess_renderer.cpp
+++ b/tess/src/sokol/sokol_tess_renderer.cpp
@@ -7,19 +7,22 @@
 
 using namespace rive;
 
-static void fillColorBuffer(float* buffer, ColorInt value) {
+static void fillColorBuffer(float* buffer, ColorInt value)
+{
     buffer[0] = (float)colorRed(value) / 0xFF;
     buffer[1] = (float)colorGreen(value) / 0xFF;
     buffer[2] = (float)colorBlue(value) / 0xFF;
     buffer[3] = colorOpacity(value);
 }
 
-class SokolRenderPath : public TessRenderPath {
+class SokolRenderPath : public TessRenderPath
+{
 public:
     SokolRenderPath() {}
     SokolRenderPath(RawPath& rawPath, FillRule fillRule) : TessRenderPath(rawPath, fillRule) {}
 
-    ~SokolRenderPath() {
+    ~SokolRenderPath()
+    {
         sg_destroy_buffer(m_vertexBuffer);
         sg_destroy_buffer(m_indexBuffer);
     }
@@ -34,12 +37,14 @@
     std::size_t m_boundsIndex = 0;
 
 protected:
-    void addTriangles(rive::Span<const rive::Vec2D> vts, rive::Span<const uint16_t> idx) override {
+    void addTriangles(rive::Span<const rive::Vec2D> vts, rive::Span<const uint16_t> idx) override
+    {
         m_vertices.insert(m_vertices.end(), vts.begin(), vts.end());
         m_indices.insert(m_indices.end(), idx.begin(), idx.end());
     }
 
-    void setTriangulatedBounds(const AABB& value) override {
+    void setTriangulatedBounds(const AABB& value) override
+    {
         m_boundsIndex = m_vertices.size();
         m_vertices.emplace_back(Vec2D(value.minX, value.minY));
         m_vertices.emplace_back(Vec2D(value.maxX, value.minY));
@@ -48,15 +53,19 @@
     }
 
 public:
-    void reset() override {
+    void reset() override
+    {
         TessRenderPath::reset();
         m_vertices.clear();
         m_indices.clear();
     }
 
-    void drawStroke(ContourStroke* stroke) {
-        if (isContainer()) {
-            for (auto& subPath : m_subPaths) {
+    void drawStroke(ContourStroke* stroke)
+    {
+        if (isContainer())
+        {
+            for (auto& subPath : m_subPaths)
+            {
                 reinterpret_cast<SokolRenderPath*>(subPath.path())->drawStroke(stroke);
             }
             return;
@@ -66,11 +75,14 @@
         sg_draw(start < 2 ? 0 : (start - 2) * 3, end - start < 2 ? 0 : (end - start - 2) * 3, 1);
     }
 
-    void drawFill() {
-        if (triangulate()) {
+    void drawFill()
+    {
+        if (triangulate())
+        {
             sg_destroy_buffer(m_vertexBuffer);
             sg_destroy_buffer(m_indexBuffer);
-            if (m_indices.size() == 0 || m_vertices.size() == 0) {
+            if (m_indices.size() == 0 || m_vertices.size() == 0)
+            {
                 m_vertexBuffer = {0};
                 m_indexBuffer = {0};
                 return;
@@ -95,7 +107,8 @@
             });
         }
 
-        if (m_vertexBuffer.id == 0) {
+        if (m_vertexBuffer.id == 0)
+        {
             return;
         }
 
@@ -108,8 +121,10 @@
         sg_draw(0, m_indices.size(), 1);
     }
 
-    void drawBounds(const sg_buffer& boundsIndexBuffer) {
-        if (m_vertexBuffer.id == 0) {
+    void drawBounds(const sg_buffer& boundsIndexBuffer)
+    {
+        if (m_vertexBuffer.id == 0)
+        {
             return;
         }
         sg_bindings bind = {
@@ -124,27 +139,32 @@
 };
 
 // Returns a full-formed RenderPath -- can be treated as immutable
-std::unique_ptr<RenderPath> SokolFactory::makeRenderPath(RawPath& rawPath, FillRule rule) {
+std::unique_ptr<RenderPath> SokolFactory::makeRenderPath(RawPath& rawPath, FillRule rule)
+{
     return std::make_unique<SokolRenderPath>(rawPath, rule);
 }
 
-std::unique_ptr<RenderPath> SokolFactory::makeEmptyRenderPath() {
+std::unique_ptr<RenderPath> SokolFactory::makeEmptyRenderPath()
+{
     return std::make_unique<SokolRenderPath>();
 }
 
-class SokolBuffer : public RenderBuffer {
+class SokolBuffer : public RenderBuffer
+{
 private:
     sg_buffer m_Buffer;
 
 public:
     SokolBuffer(size_t count, const sg_buffer_desc& desc) :
-        RenderBuffer(count), m_Buffer(sg_make_buffer(desc)) {}
+        RenderBuffer(count), m_Buffer(sg_make_buffer(desc))
+    {}
     ~SokolBuffer() { sg_destroy_buffer(m_Buffer); }
 
     sg_buffer buffer() { return m_Buffer; }
 };
 
-rcp<RenderBuffer> SokolFactory::makeBufferU16(Span<const uint16_t> span) {
+rcp<RenderBuffer> SokolFactory::makeBufferU16(Span<const uint16_t> span)
+{
     return rcp<RenderBuffer>(new SokolBuffer(span.size(),
                                              (sg_buffer_desc){
                                                  .type = SG_BUFFERTYPE_INDEXBUFFER,
@@ -156,7 +176,8 @@
                                              }));
 }
 
-rcp<RenderBuffer> SokolFactory::makeBufferU32(Span<const uint32_t> span) {
+rcp<RenderBuffer> SokolFactory::makeBufferU32(Span<const uint32_t> span)
+{
     return rcp<RenderBuffer>(new SokolBuffer(span.size(),
                                              (sg_buffer_desc){
                                                  .type = SG_BUFFERTYPE_INDEXBUFFER,
@@ -167,7 +188,8 @@
                                                      },
                                              }));
 }
-rcp<RenderBuffer> SokolFactory::makeBufferF32(Span<const float> span) {
+rcp<RenderBuffer> SokolFactory::makeBufferF32(Span<const float> span)
+{
     return rcp<RenderBuffer>(new SokolBuffer(span.size(),
                                              (sg_buffer_desc){
                                                  .type = SG_BUFFERTYPE_VERTEXBUFFER,
@@ -182,7 +204,8 @@
 sg_pipeline vectorPipeline(sg_shader shader,
                            sg_blend_state blend,
                            sg_stencil_state stencil,
-                           sg_color_mask colorMask = SG_COLORMASK_RGBA) {
+                           sg_color_mask colorMask = SG_COLORMASK_RGBA)
+{
     return sg_make_pipeline((sg_pipeline_desc){
         .layout =
             {
@@ -216,7 +239,8 @@
     });
 }
 
-SokolTessRenderer::SokolTessRenderer() {
+SokolTessRenderer::SokolTessRenderer()
+{
     m_meshPipeline = sg_make_pipeline((sg_pipeline_desc){
         .layout =
             {
@@ -266,7 +290,8 @@
                                                .enabled = false,
                                            });
 
-        for (std::size_t i = 1; i <= maxClippingPaths; i++) {
+        for (std::size_t i = 1; i <= maxClippingPaths; i++)
+        {
             m_pathPipeline[i] =
                 vectorPipeline(uberShader,
                                {
@@ -306,7 +331,8 @@
                                .enabled = false,
                            });
 
-        for (std::size_t i = 1; i <= maxClippingPaths; i++) {
+        for (std::size_t i = 1; i <= maxClippingPaths; i++)
+        {
             m_pathScreenPipeline[i] =
                 vectorPipeline(uberShader,
                                {
@@ -345,7 +371,8 @@
                                                        .enabled = false,
                                                    });
 
-        for (std::size_t i = 1; i <= maxClippingPaths; i++) {
+        for (std::size_t i = 1; i <= maxClippingPaths; i++)
+        {
             m_pathAdditivePipeline[i] =
                 vectorPipeline(uberShader,
                                {
@@ -383,7 +410,8 @@
                                .enabled = false,
                            });
 
-        for (std::size_t i = 1; i <= maxClippingPaths; i++) {
+        for (std::size_t i = 1; i <= maxClippingPaths; i++)
+        {
             m_pathMultiplyPipeline[i] =
                 vectorPipeline(uberShader,
                                {
@@ -466,12 +494,14 @@
     });
 }
 
-SokolTessRenderer::~SokolTessRenderer() {
+SokolTessRenderer::~SokolTessRenderer()
+{
     sg_destroy_buffer(m_boundsIndices);
     sg_destroy_pipeline(m_meshPipeline);
     sg_destroy_pipeline(m_incClipPipeline);
     sg_destroy_pipeline(m_decClipPipeline);
-    for (std::size_t i = 0; i <= maxClippingPaths; i++) {
+    for (std::size_t i = 0; i <= maxClippingPaths; i++)
+    {
         sg_destroy_pipeline(m_pathPipeline[i]);
         sg_destroy_pipeline(m_pathScreenPipeline[i]);
     }
@@ -482,7 +512,8 @@
                                                float bottom,
                                                float top,
                                                float near,
-                                               float far) {
+                                               float far)
+{
     m_Projection[0] = 2.0f / (right - left);
     m_Projection[1] = 0.0f;
     m_Projection[2] = 0.0f;
@@ -526,7 +557,8 @@
     // }
 }
 
-void SokolTessRenderer::drawImage(const RenderImage* image, BlendMode, float opacity) {
+void SokolTessRenderer::drawImage(const RenderImage* image, BlendMode, float opacity)
+{
     vs_params_t vs_params;
 
     const Mat2D& world = transform();
@@ -551,7 +583,8 @@
                                       rcp<RenderBuffer> uvCoords_f32,
                                       rcp<RenderBuffer> indices_u16,
                                       BlendMode blendMode,
-                                      float opacity) {
+                                      float opacity)
+{
     vs_params_t vs_params;
 
     const Mat2D& world = transform();
@@ -570,7 +603,8 @@
     sg_draw(0, indices_u16->count(), 1);
 }
 
-class SokolGradient : public RenderShader {
+class SokolGradient : public RenderShader
+{
 private:
     Vec2D m_start;
     Vec2D m_end;
@@ -582,13 +616,16 @@
 private:
     // General gradient
     SokolGradient(int type, const ColorInt colors[], const float stops[], size_t count) :
-        m_type(type) {
+        m_type(type)
+    {
         m_stops.resize(count);
         m_colors.resize(count * 4);
-        for (int i = 0, colorIndex = 0; i < count; i++, colorIndex += 4) {
+        for (int i = 0, colorIndex = 0; i < count; i++, colorIndex += 4)
+        {
             fillColorBuffer(&m_colors[colorIndex], colors[i]);
             m_stops[i] = stops[i];
-            if (m_colors[colorIndex + 3] > 0.0f) {
+            if (m_colors[colorIndex + 3] > 0.0f)
+            {
                 m_isVisible = true;
             }
         }
@@ -603,7 +640,8 @@
                   const ColorInt colors[],
                   const float stops[],
                   size_t count) :
-        SokolGradient(1, colors, stops, count) {
+        SokolGradient(1, colors, stops, count)
+    {
         m_start = Vec2D(sx, sy);
         m_end = Vec2D(ex, ey);
     }
@@ -614,20 +652,24 @@
                   const ColorInt colors[], // [count]
                   const float stops[],     // [count]
                   size_t count) :
-        SokolGradient(2, colors, stops, count) {
+        SokolGradient(2, colors, stops, count)
+    {
         m_start = Vec2D(cx, cy);
         m_end = Vec2D(cx + radius, cy);
     }
 
-    void bind(vs_path_params_t& vertexUniforms, fs_path_uniforms_t& fragmentUniforms) {
+    void bind(vs_path_params_t& vertexUniforms, fs_path_uniforms_t& fragmentUniforms)
+    {
         auto stopCount = m_stops.size();
         vertexUniforms.fillType = fragmentUniforms.fillType = m_type;
         vertexUniforms.gradientStart = m_start;
         vertexUniforms.gradientEnd = m_end;
         fragmentUniforms.stopCount = stopCount;
-        for (int i = 0; i < stopCount; i++) {
+        for (int i = 0; i < stopCount; i++)
+        {
             auto colorBufferIndex = i * 4;
-            for (int j = 0; j < 4; j++) {
+            for (int j = 0; j < 4; j++)
+            {
                 fragmentUniforms.colors[i][j] = m_colors[colorBufferIndex + j];
             }
             fragmentUniforms.stops[i / 4][i % 4] = m_stops[i];
@@ -641,7 +683,8 @@
                                                    float ey,
                                                    const ColorInt colors[],
                                                    const float stops[],
-                                                   size_t count) {
+                                                   size_t count)
+{
     return rcp<RenderShader>(new SokolGradient(sx, sy, ex, ey, colors, stops, count));
 }
 
@@ -650,11 +693,13 @@
                                                    float radius,
                                                    const ColorInt colors[], // [count]
                                                    const float stops[],     // [count]
-                                                   size_t count) {
+                                                   size_t count)
+{
     return rcp<RenderShader>(new SokolGradient(cx, cy, radius, colors, stops, count));
 }
 
-class SokolRenderPaint : public RenderPaint {
+class SokolRenderPaint : public RenderPaint
+{
 private:
     fs_path_uniforms_t m_uniforms = {0};
     rcp<RenderShader> m_shader;
@@ -672,20 +717,24 @@
     BlendMode m_blendMode = BlendMode::srcOver;
 
 public:
-    ~SokolRenderPaint() override {
+    ~SokolRenderPaint() override
+    {
         sg_destroy_buffer(m_strokeVertexBuffer);
         sg_destroy_buffer(m_strokeIndexBuffer);
     }
 
-    void color(ColorInt value) override {
+    void color(ColorInt value) override
+    {
         fillColorBuffer(m_uniforms.colors[0], value);
         m_uniforms.fillType = 0;
     }
 
-    void style(RenderPaintStyle value) override {
+    void style(RenderPaintStyle value) override
+    {
         m_style = value;
 
-        switch (m_style) {
+        switch (m_style)
+        {
             case RenderPaintStyle::fill:
                 m_stroke = nullptr;
                 m_strokeDirty = false;
@@ -699,23 +748,28 @@
 
     RenderPaintStyle style() const { return m_style; }
 
-    void thickness(float value) override {
+    void thickness(float value) override
+    {
         m_strokeThickness = value;
         m_strokeDirty = true;
     }
 
-    void join(StrokeJoin value) override {
+    void join(StrokeJoin value) override
+    {
         m_strokeJoin = value;
         m_strokeDirty = true;
     }
 
-    void cap(StrokeCap value) override {
+    void cap(StrokeCap value) override
+    {
         m_strokeCap = value;
         m_strokeDirty = true;
     }
 
-    void invalidateStroke() override {
-        if (m_stroke) {
+    void invalidateStroke() override
+    {
+        if (m_stroke)
+        {
             m_strokeDirty = true;
         }
     }
@@ -725,15 +779,19 @@
 
     void shader(rcp<RenderShader> shader) override { m_shader = shader; }
 
-    void draw(vs_path_params_t& vertexUniforms, SokolRenderPath* path) {
-        if (m_shader) {
+    void draw(vs_path_params_t& vertexUniforms, SokolRenderPath* path)
+    {
+        if (m_shader)
+        {
             static_cast<SokolGradient*>(m_shader.get())->bind(vertexUniforms, m_uniforms);
         }
 
         sg_apply_uniforms(SG_SHADERSTAGE_VS, SLOT_vs_path_params, SG_RANGE_REF(vertexUniforms));
         sg_apply_uniforms(SG_SHADERSTAGE_FS, SLOT_fs_path_uniforms, SG_RANGE_REF(m_uniforms));
-        if (m_stroke != nullptr) {
-            if (m_strokeDirty) {
+        if (m_stroke != nullptr)
+        {
+            if (m_strokeDirty)
+            {
                 static Mat2D identity;
                 m_stroke->reset();
                 path->extrudeStroke(m_stroke.get(),
@@ -748,7 +806,8 @@
                 sg_destroy_buffer(m_strokeVertexBuffer);
                 sg_destroy_buffer(m_strokeIndexBuffer);
                 auto size = strip.size();
-                if (size <= 2) {
+                if (size <= 2)
+                {
                     m_strokeVertexBuffer = {0};
                     m_strokeIndexBuffer = {0};
                     return;
@@ -770,19 +829,26 @@
                 // to)
                 m_stroke->resetRenderOffset();
                 m_StrokeOffsets.clear();
-                while (true) {
+                while (true)
+                {
                     std::size_t strokeStart, strokeEnd;
-                    if (!m_stroke->nextRenderOffset(strokeStart, strokeEnd)) {
+                    if (!m_stroke->nextRenderOffset(strokeStart, strokeEnd))
+                    {
                         break;
                     }
                     std::size_t length = strokeEnd - strokeStart;
-                    if (length > 2) {
-                        for (std::size_t i = 0, end = length - 2; i < end; i++) {
-                            if ((i % 2) == 1) {
+                    if (length > 2)
+                    {
+                        for (std::size_t i = 0, end = length - 2; i < end; i++)
+                        {
+                            if ((i % 2) == 1)
+                            {
                                 indices.push_back(i + strokeStart);
                                 indices.push_back(i + 1 + strokeStart);
                                 indices.push_back(i + 2 + strokeStart);
-                            } else {
+                            }
+                            else
+                            {
                                 indices.push_back(i + strokeStart);
                                 indices.push_back(i + 2 + strokeStart);
                                 indices.push_back(i + 1 + strokeStart);
@@ -801,7 +867,8 @@
                         },
                 });
             }
-            if (m_strokeVertexBuffer.id == 0) {
+            if (m_strokeVertexBuffer.id == 0)
+            {
                 return;
             }
 
@@ -815,48 +882,59 @@
             m_stroke->resetRenderOffset();
             // path->drawStroke(m_stroke.get());
             std::size_t start = 0;
-            for (auto end : m_StrokeOffsets) {
+            for (auto end : m_StrokeOffsets)
+            {
                 sg_draw(start, end - start, 1);
                 start = end;
             }
-
-        } else {
+        }
+        else
+        {
             path->drawFill();
         }
     }
 };
 
-std::unique_ptr<RenderPaint> SokolFactory::makeRenderPaint() {
+std::unique_ptr<RenderPaint> SokolFactory::makeRenderPaint()
+{
     return std::make_unique<SokolRenderPaint>();
 }
 
-void SokolTessRenderer::restore() {
+void SokolTessRenderer::restore()
+{
     TessRenderer::restore();
-    if (m_Stack.size() == 1) {
+    if (m_Stack.size() == 1)
+    {
         // When we've fully restored, immediately update clip to not wait for next draw.
         applyClipping();
         m_currentPipeline = {0};
     }
 }
 
-void SokolTessRenderer::applyClipping() {
-    if (!m_IsClippingDirty) {
+void SokolTessRenderer::applyClipping()
+{
+    if (!m_IsClippingDirty)
+    {
         return;
     }
     m_IsClippingDirty = false;
     RenderState& state = m_Stack.back();
 
     auto currentClipLength = m_ClipPaths.size();
-    if (currentClipLength == state.clipPaths.size()) {
+    if (currentClipLength == state.clipPaths.size())
+    {
         // Same length so now check if they're all the same.
         bool allSame = true;
-        for (std::size_t i = 0; i < currentClipLength; i++) {
-            if (state.clipPaths[i].path() != m_ClipPaths[i].path()) {
+        for (std::size_t i = 0; i < currentClipLength; i++)
+        {
+            if (state.clipPaths[i].path() != m_ClipPaths[i].path())
+            {
                 allSame = false;
                 break;
             }
         }
-        if (allSame) {
+        if (allSame)
+        {
             return;
         }
     }
@@ -867,16 +945,20 @@
     // Decr any paths from the last clip that are gone.
     std::unordered_set<RenderPath*> alreadyApplied;
 
-    for (auto appliedPath : m_ClipPaths) {
+    for (auto appliedPath : m_ClipPaths)
+    {
         bool decr = true;
-        for (auto nextClipPath : state.clipPaths) {
-            if (nextClipPath.path() == appliedPath.path()) {
+        for (auto nextClipPath : state.clipPaths)
+        {
+            if (nextClipPath.path() == appliedPath.path())
+            {
                 decr = false;
                 alreadyApplied.insert(appliedPath.path());
                 break;
             }
         }
-        if (decr) {
+        if (decr)
+        {
             // Draw appliedPath.path() with decr pipeline
             setPipeline(m_decClipPipeline);
             vs_params.mvp = m_Projection * appliedPath.transform();
@@ -888,8 +970,10 @@
     }
 
     // Incr any paths that are added.
-    for (auto nextClipPath : state.clipPaths) {
-        if (alreadyApplied.count(nextClipPath.path())) {
+    for (auto nextClipPath : state.clipPaths)
+    {
+        if (alreadyApplied.count(nextClipPath.path()))
+        {
             // Already applied.
             continue;
         }
@@ -910,15 +994,18 @@
 }
 
 void SokolTessRenderer::reset() { m_currentPipeline = {0}; }
-void SokolTessRenderer::setPipeline(sg_pipeline pipeline) {
-    if (m_currentPipeline.id == pipeline.id) {
+void SokolTessRenderer::setPipeline(sg_pipeline pipeline)
+{
+    if (m_currentPipeline.id == pipeline.id)
+    {
         return;
     }
     m_currentPipeline = pipeline;
     sg_apply_pipeline(pipeline);
 }
 
-void SokolTessRenderer::drawPath(RenderPath* path, RenderPaint* paint) {
+void SokolTessRenderer::drawPath(RenderPath* path, RenderPaint* paint)
+{
     auto sokolPaint = static_cast<SokolRenderPaint*>(paint);
 
     applyClipping();
@@ -926,12 +1013,23 @@
     const Mat2D& world = transform();
 
     vs_params.mvp = m_Projection * world;
-    switch (sokolPaint->blendMode()) {
-        case BlendMode::srcOver: setPipeline(m_pathPipeline[m_clipCount]); break;
-        case BlendMode::screen: setPipeline(m_pathScreenPipeline[m_clipCount]); break;
-        case BlendMode::colorDodge: setPipeline(m_pathAdditivePipeline[m_clipCount]); break;
-        case BlendMode::multiply: setPipeline(m_pathMultiplyPipeline[m_clipCount]); break;
-        default: setPipeline(m_pathScreenPipeline[m_clipCount]); break;
+    switch (sokolPaint->blendMode())
+    {
+        case BlendMode::srcOver:
+            setPipeline(m_pathPipeline[m_clipCount]);
+            break;
+        case BlendMode::screen:
+            setPipeline(m_pathScreenPipeline[m_clipCount]);
+            break;
+        case BlendMode::colorDodge:
+            setPipeline(m_pathAdditivePipeline[m_clipCount]);
+            break;
+        case BlendMode::multiply:
+            setPipeline(m_pathMultiplyPipeline[m_clipCount]);
+            break;
+        default:
+            setPipeline(m_pathScreenPipeline[m_clipCount]);
+            break;
     }
 
     static_cast<SokolRenderPaint*>(paint)->draw(vs_params, static_cast<SokolRenderPath*>(path));
@@ -945,7 +1043,8 @@
         .height = (int)height,
         .data.subimage[0][0] = {bytes, width * height * 4},
         .pixel_format = SG_PIXELFORMAT_RGBA8,
-    })) {}
+    }))
+{}
 SokolRenderImageResource::~SokolRenderImageResource() { sg_destroy_image(m_gpuResource); }
 
 SokolRenderImage::SokolRenderImage(rcp<SokolRenderImageResource> image,
@@ -953,8 +1052,7 @@
                                    uint32_t height,
                                    const Mat2D& uvTransform) :
 
-    RenderImage(uvTransform),
-    m_gpuImage(image)
+    RenderImage(uvTransform), m_gpuImage(image)
 
 {
     float halfWidth = width / 2.0f;
@@ -983,7 +1081,8 @@
     });
 }
 
-SokolRenderImage::~SokolRenderImage() {
+SokolRenderImage::~SokolRenderImage()
+{
     sg_destroy_buffer(m_vertexBuffer);
     sg_destroy_buffer(m_uvBuffer);
 }
diff --git a/tess/src/tess_render_path.cpp b/tess/src/tess_render_path.cpp
index 0ed6c45..af16728 100644
--- a/tess/src/tess_render_path.cpp
+++ b/tess/src/tess_render_path.cpp
@@ -7,13 +7,15 @@
 using namespace rive;
 TessRenderPath::TessRenderPath() : m_segmentedContour(contourThreshold) {}
 TessRenderPath::TessRenderPath(RawPath& rawPath, FillRule fillRule) :
-    m_fillRule(fillRule), m_segmentedContour(contourThreshold) {
+    m_fillRule(fillRule), m_segmentedContour(contourThreshold)
+{
     m_rawPath.swap(rawPath);
 }
 
 TessRenderPath::~TessRenderPath() {}
 
-void TessRenderPath::reset() {
+void TessRenderPath::reset()
+{
     m_rawPath.rewind();
     m_subPaths.clear();
     m_isContourDirty = m_isTriangulationDirty = true;
@@ -23,28 +25,35 @@
 
 void TessRenderPath::moveTo(float x, float y) { m_rawPath.moveTo(x, y); }
 void TessRenderPath::lineTo(float x, float y) { m_rawPath.lineTo(x, y); }
-void TessRenderPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y) {
+void TessRenderPath::cubicTo(float ox, float oy, float ix, float iy, float x, float y)
+{
     m_rawPath.cubicTo(ox, oy, ix, iy, x, y);
 }
-void TessRenderPath::close() {
+void TessRenderPath::close()
+{
     m_rawPath.close();
     m_isClosed = true;
 }
 
-void TessRenderPath::addRenderPath(RenderPath* path, const Mat2D& transform) {
+void TessRenderPath::addRenderPath(RenderPath* path, const Mat2D& transform)
+{
     m_subPaths.emplace_back(SubPath(path, transform));
 }
 
 const SegmentedContour& TessRenderPath::segmentedContour() const { return m_segmentedContour; }
 
 // Helper for earcut to understand Vec2D
-namespace mapbox {
-namespace util {
+namespace mapbox
+{
+namespace util
+{
 
-template <> struct nth<0, Vec2D> {
+template <> struct nth<0, Vec2D>
+{
     inline static auto get(const Vec2D& t) { return t.x; };
 };
-template <> struct nth<1, Vec2D> {
+template <> struct nth<1, Vec2D>
+{
     inline static auto get(const Vec2D& t) { return t.y; };
 };
 
@@ -53,20 +62,24 @@
 
 const RawPath& TessRenderPath::rawPath() const { return m_rawPath; }
 
-void* stdAlloc(void* userData, unsigned int size) {
+void* stdAlloc(void* userData, unsigned int size)
+{
     int* allocated = (int*)userData;
     TESS_NOTUSED(userData);
     *allocated += (int)size;
     return malloc(size);
 }
 
-void stdFree(void* userData, void* ptr) {
+void stdFree(void* userData, void* ptr)
+{
     TESS_NOTUSED(userData);
     free(ptr);
 }
 
-bool TessRenderPath::triangulate() {
-    if (!m_isTriangulationDirty) {
+bool TessRenderPath::triangulate()
+{
+    if (!m_isTriangulationDirty)
+    {
         return false;
     }
     m_isTriangulationDirty = false;
@@ -74,13 +87,16 @@
     return true;
 }
 
-void TessRenderPath::triangulate(TessRenderPath* containerPath) {
+void TessRenderPath::triangulate(TessRenderPath* containerPath)
+{
     AABB bounds = AABB::forExpansion();
     // If there's a single path, we're going to try to assume the user isn't
     // doing any funky self overlapping winding and we'll try to triangulate it
     // quickly as a single polygon.
-    if (m_subPaths.size() == 0) {
-        if (!empty()) {
+    if (m_subPaths.size() == 0)
+    {
+        if (!empty())
+        {
             Mat2D identity;
             contour(identity);
 
@@ -92,15 +108,20 @@
 
             containerPath->addTriangles(contour, m_earcut.indices);
         }
-    } else if (m_subPaths.size() == 1) {
+    }
+    else if (m_subPaths.size() == 1)
+    {
         // We're a container but we only have 1 path, let's see if we can use
         // our fast triangulator.
         SubPath& subPath = m_subPaths.front();
         auto subRenderPath = static_cast<TessRenderPath*>(subPath.path());
-        if (subRenderPath->isContainer()) {
+        if (subRenderPath->isContainer())
+        {
             // Nope, subpath is also a container, keep going.
             subRenderPath->triangulate(containerPath);
-        } else if (!subRenderPath->empty()) {
+        }
+        else if (!subRenderPath->empty())
+        {
             // Yes, it's a single path with commands, triangulate it.
             subRenderPath->contour(subPath.transform());
             const SegmentedContour& segmentedContour = subRenderPath->segmentedContour();
@@ -110,15 +131,22 @@
 
             containerPath->addTriangles(contour, m_earcut.indices);
         }
-    } else {
+    }
+    else
+    {
         // We're a container with multiple sub-paths.
         TESStesselator* tess = nullptr;
-        for (SubPath& subPath : m_subPaths) {
+        for (SubPath& subPath : m_subPaths)
+        {
             auto subRenderPath = static_cast<TessRenderPath*>(subPath.path());
-            if (subRenderPath->isContainer()) {
+            if (subRenderPath->isContainer())
+            {
                 subRenderPath->triangulate(containerPath);
-            } else if (!subRenderPath->empty()) {
-                if (tess == nullptr) {
+            }
+            else if (!subRenderPath->empty())
+            {
+                if (tess == nullptr)
+                {
                     tess = tessNewTess(nullptr);
                 }
                 subRenderPath->contour(subPath.transform());
@@ -128,8 +156,10 @@
                 bounds.expand(segmentedContour.bounds());
             }
         }
-        if (tess != nullptr) {
-            if (tessTesselate(tess, TESS_WINDING_POSITIVE, TESS_POLYGONS, 3, 2, 0)) {
+        if (tess != nullptr)
+        {
+            if (tessTesselate(tess, TESS_WINDING_POSITIVE, TESS_POLYGONS, 3, 2, 0))
+            {
                 auto verts = tessGetVertices(tess);
                 // const int* vinds = tessGetVertexIndices(tess);
                 auto nverts = tessGetVertexCount(tess);
@@ -137,7 +167,8 @@
                 auto nelems = tessGetElementCount(tess);
 
                 std::vector<uint16_t> indices;
-                for (int i = 0; i < nelems * 3; i++) {
+                for (int i = 0; i < nelems * 3; i++)
+                {
                     indices.push_back(elems[i]);
                 }
 
@@ -151,8 +182,10 @@
     containerPath->setTriangulatedBounds(bounds);
 }
 
-void TessRenderPath::contour(const Mat2D& transform) {
-    if (!m_isContourDirty && transform == m_contourTransform) {
+void TessRenderPath::contour(const Mat2D& transform)
+{
+    if (!m_isContourDirty && transform == m_contourTransform)
+    {
         return;
     }
 
@@ -165,9 +198,12 @@
                                    StrokeJoin join,
                                    StrokeCap cap,
                                    float strokeWidth,
-                                   const Mat2D& transform) {
-    if (isContainer()) {
-        for (auto& subPath : m_subPaths) {
+                                   const Mat2D& transform)
+{
+    if (isContainer())
+    {
+        for (auto& subPath : m_subPaths)
+        {
             static_cast<TessRenderPath*>(subPath.path())
                 ->extrudeStroke(stroke, join, cap, strokeWidth, subPath.transform());
         }
diff --git a/tess/src/tess_renderer.cpp b/tess/src/tess_renderer.cpp
index 7dac821..773717d 100644
--- a/tess/src/tess_renderer.cpp
+++ b/tess/src/tess_renderer.cpp
@@ -8,24 +8,28 @@
 void TessRenderer::projection(const Mat4& value) { m_Projection = value; }
 
 void TessRenderer::save() { m_Stack.push_back(m_Stack.back()); }
-void TessRenderer::restore() {
+void TessRenderer::restore()
+{
     assert(m_Stack.size() > 1);
     RenderState& state = m_Stack.back();
     m_Stack.pop_back();
 
     // We can only add clipping paths so if they're still the same, nothing has
     // changed.
-    if (state.clipPaths.size() != m_Stack.back().clipPaths.size()) {
+    if (state.clipPaths.size() != m_Stack.back().clipPaths.size())
+    {
         m_IsClippingDirty = true;
     }
 }
 
-void TessRenderer::transform(const Mat2D& transform) {
+void TessRenderer::transform(const Mat2D& transform)
+{
     Mat2D& stackMat = m_Stack.back().transform;
     stackMat = stackMat * transform;
 }
 
-void TessRenderer::clipPath(RenderPath* path) {
+void TessRenderer::clipPath(RenderPath* path)
+{
 
     RenderState& state = m_Stack.back();
     state.clipPaths.emplace_back(SubPath(path, state.transform));
@@ -38,4 +42,5 @@
                                  rcp<RenderBuffer> uvCoords_f32,
                                  rcp<RenderBuffer> indices_u16,
                                  BlendMode,
-                                 float opacity) {}
\ No newline at end of file
+                                 float opacity)
+{}
\ No newline at end of file
diff --git a/tess/test/mat4_test.cpp b/tess/test/mat4_test.cpp
index 1e4f580..782ca3b 100644
--- a/tess/test/mat4_test.cpp
+++ b/tess/test/mat4_test.cpp
@@ -2,7 +2,8 @@
 #include "rive/math/mat4.hpp"
 #include "rive/math/mat2d.hpp"
 
-TEST_CASE("Mat2D to Mat4 works", "[mat4]") {
+TEST_CASE("Mat2D to Mat4 works", "[mat4]")
+{
     rive::Mat2D matrix2D(0.1f, 0.2f, 0.0f, 2.0f, 22.0f, 33.0f);
     rive::Mat4 matrix4x4 = matrix2D;
     REQUIRE(matrix4x4[0] == 0.1f);
@@ -13,7 +14,8 @@
     REQUIRE(matrix4x4[13] == 33.0f);
 }
 
-TEST_CASE("Mat4 times Mat2 works", "[mat4]") {
+TEST_CASE("Mat4 times Mat2 works", "[mat4]")
+{
     rive::Mat2D matrix2D(0.1f, 0.2f, 0.0f, 2.0f, 22.0f, 33.0f);
     rive::Mat4 identity4x4;
     rive::Mat4 matrix4x4 = identity4x4 * matrix2D;
@@ -25,7 +27,8 @@
     REQUIRE(matrix4x4[13] == 33.0f);
 }
 
-TEST_CASE("Mat4 times Mat4 works", "[mat4]") {
+TEST_CASE("Mat4 times Mat4 works", "[mat4]")
+{
     rive::Mat4 a(
         // clang-format off
         5.0f, 7.0f, 9.0f, 10.0f,
diff --git a/tess/test/triangulation_test.cpp b/tess/test/triangulation_test.cpp
index 756745b..5837635 100644
--- a/tess/test/triangulation_test.cpp
+++ b/tess/test/triangulation_test.cpp
@@ -3,14 +3,16 @@
 #include "rive/tess/tess_render_path.hpp"
 #include "rive_file_reader.hpp"
 
-class TestRenderPath : public rive::TessRenderPath {
+class TestRenderPath : public rive::TessRenderPath
+{
 public:
     std::vector<rive::Vec2D> vertices;
     std::vector<uint16_t> indices;
 
 protected:
     virtual void addTriangles(rive::Span<const rive::Vec2D> vts,
-                              rive::Span<const uint16_t> idx) override {
+                              rive::Span<const uint16_t> idx) override
+    {
         vertices.insert(vertices.end(), vts.begin(), vts.end());
         indices.insert(indices.end(), idx.begin(), idx.end());
     }
@@ -18,7 +20,8 @@
     void setTriangulatedBounds(const rive::AABB& value) override {}
 };
 
-TEST_CASE("simple triangle path triangulates as expected", "[file]") {
+TEST_CASE("simple triangle path triangulates as expected", "[file]")
+{
     auto file = ReadRiveFile("../test/assets/triangle.riv");
     auto artboard = file->artboard();
     artboard->advance(0.0f);
diff --git a/test/binary_reader_test.cpp b/test/binary_reader_test.cpp
index 80db713..bb43a84 100644
--- a/test/binary_reader_test.cpp
+++ b/test/binary_reader_test.cpp
@@ -1,7 +1,8 @@
 #include <catch.hpp>
 #include <rive/core/binary_reader.hpp>
 
-template <typename T> void checkFits() {
+template <typename T> void checkFits()
+{
     int64_t min = std::numeric_limits<T>::min();
     int64_t max = std::numeric_limits<T>::max();
     REQUIRE(rive::fitsIn<T>(max + 0));
@@ -10,7 +11,8 @@
     REQUIRE(!rive::fitsIn<T>(min - 1));
 }
 
-TEST_CASE("fitsIn checks", "[type_conversions]") {
+TEST_CASE("fitsIn checks", "[type_conversions]")
+{
     checkFits<int8_t>();
     checkFits<uint8_t>();
 
@@ -21,8 +23,10 @@
     checkFits<uint32_t>();
 }
 
-static uint8_t* packvarint(uint8_t array[], uint64_t value) {
-    while (value > 127) {
+static uint8_t* packvarint(uint8_t array[], uint64_t value)
+{
+    while (value > 127)
+    {
         *array++ = static_cast<uint8_t>(0x80 | (value & 0x7F));
         value >>= 7;
     }
@@ -30,7 +34,8 @@
     return array;
 }
 
-template <typename T> bool checkAs(uint64_t value) {
+template <typename T> bool checkAs(uint64_t value)
+{
     uint8_t storage[16];
     uint8_t* p = storage;
 
@@ -39,14 +44,16 @@
 
     auto newValue = reader.readVarUintAs<T>();
 
-    if (reader.hasError()) {
+    if (reader.hasError())
+    {
         REQUIRE(newValue == 0);
     }
 
     return !reader.hasError() && value == newValue;
 }
 
-TEST_CASE("range checks", "[binary_reader]") {
+TEST_CASE("range checks", "[binary_reader]")
+{
     REQUIRE(checkAs<uint8_t>(100));
     REQUIRE(checkAs<uint16_t>(100));
     REQUIRE(checkAs<uint32_t>(100));
diff --git a/test/bound_bones_test.cpp b/test/bound_bones_test.cpp
index 004f8c7..9362d38 100644
--- a/test/bound_bones_test.cpp
+++ b/test/bound_bones_test.cpp
@@ -12,7 +12,8 @@
 #include <catch.hpp>
 #include <cstdio>
 
-TEST_CASE("bound bones load correctly", "[bones]") {
+TEST_CASE("bound bones load correctly", "[bones]")
+{
     auto file = ReadRiveFile("../../test/assets/off_road_car.riv");
 
     auto node = file->artboard()->find("transmission_front_testing");
@@ -27,7 +28,8 @@
     REQUIRE(pointsPath->skin()->tendons()[0]->bone() != nullptr);
     REQUIRE(pointsPath->skin()->tendons()[1]->bone() != nullptr);
 
-    for (auto vertex : path->vertices()) {
+    for (auto vertex : path->vertices())
+    {
         REQUIRE(vertex->weight() != nullptr);
     }
 
diff --git a/test/clip_test.cpp b/test/clip_test.cpp
index 6d8bada..f0e4331 100644
--- a/test/clip_test.cpp
+++ b/test/clip_test.cpp
@@ -8,7 +8,8 @@
 #include <catch.hpp>
 #include <cstdio>
 
-TEST_CASE("clipping loads correctly", "[clipping]") {
+TEST_CASE("clipping loads correctly", "[clipping]")
+{
     auto file = ReadRiveFile("../../test/assets/circle_clips.riv");
 
     auto node = file->artboard()->find("TopEllipse");
diff --git a/test/contour_measure_test.cpp b/test/contour_measure_test.cpp
index a5061a1..aa6c77c 100644
--- a/test/contour_measure_test.cpp
+++ b/test/contour_measure_test.cpp
@@ -12,23 +12,27 @@
 
 using namespace rive;
 
-static bool nearly_eq(float a, float b, float tolerance) {
+static bool nearly_eq(float a, float b, float tolerance)
+{
     assert(tolerance >= 0);
     const float diff = std::abs(a - b);
     const float max = std::max(std::abs(a), std::abs(b));
     const float allowed = tolerance * max;
-    if (diff > allowed) {
+    if (diff > allowed)
+    {
         printf("%g %g delta %g allowed %g\n", a, b, diff, allowed);
         return false;
     }
     return true;
 }
 
-static bool nearly_eq(Vec2D a, Vec2D b, float tol) {
+static bool nearly_eq(Vec2D a, Vec2D b, float tol)
+{
     return nearly_eq(a.x, b.x, tol) && nearly_eq(a.y, b.y, tol);
 }
 
-TEST_CASE("contour-basics", "[contourmeasure]") {
+TEST_CASE("contour-basics", "[contourmeasure]")
+{
     const float tol = 0.000001f;
 
     RawPath path;
@@ -67,7 +71,8 @@
         {{w / 2, h}, {-1, 0}},
         {{0, h / 2}, {0, -1}},
     };
-    for (int i = 0; i < 4; ++i) {
+    for (int i = 0; i < 4; ++i)
+    {
         auto rec = cm->getPosTan(midDistances[i]);
         REQUIRE(nearly_eq(rec.pos, midPoints[i].pos, tol));
         REQUIRE(nearly_eq(rec.tan, midPoints[i].tan, tol));
@@ -75,7 +80,8 @@
     REQUIRE(iter.next() == nullptr);
 }
 
-TEST_CASE("multi-contours", "[contourmeasure]") {
+TEST_CASE("multi-contours", "[contourmeasure]")
+{
     const Vec2D pts[] = {
         {0, 0},
         {3, 0},
@@ -120,7 +126,8 @@
     REQUIRE(!cm);
 }
 
-TEST_CASE("contour-oval", "[contourmeasure]") {
+TEST_CASE("contour-oval", "[contourmeasure]")
+{
     const float tol = 0.0075f;
 
     const float r = 10;
diff --git a/test/default_state_machine_test.cpp b/test/default_state_machine_test.cpp
index 6da2b4e..1983b7c 100644
--- a/test/default_state_machine_test.cpp
+++ b/test/default_state_machine_test.cpp
@@ -10,7 +10,8 @@
 #include <catch.hpp>
 #include <cstdio>
 
-TEST_CASE("default state machine is detected at load", "[file]") {
+TEST_CASE("default state machine is detected at load", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/entry.riv");
 
     auto abi = file->artboardAt(0);
diff --git a/test/distance_constraint_test.cpp b/test/distance_constraint_test.cpp
index ece41f0..62b97f5 100644
--- a/test/distance_constraint_test.cpp
+++ b/test/distance_constraint_test.cpp
@@ -7,7 +7,8 @@
 #include "rive_testing.hpp"
 #include <cstdio>
 
-TEST_CASE("distance constraints moves items as expected", "[file]") {
+TEST_CASE("distance constraints moves items as expected", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/distance_constraint.riv");
 
     auto artboard = file->artboard();
diff --git a/test/draw_order_test.cpp b/test/draw_order_test.cpp
index be3a122..8567648 100644
--- a/test/draw_order_test.cpp
+++ b/test/draw_order_test.cpp
@@ -8,7 +8,8 @@
 #include <catch.hpp>
 #include <cstdio>
 
-TEST_CASE("draw rules load and sort correctly", "[draw rules]") {
+TEST_CASE("draw rules load and sort correctly", "[draw rules]")
+{
     auto file = ReadRiveFile("../../test/assets/draw_rule_cycle.riv");
 
     // auto file = reader.file();
diff --git a/test/file_test.cpp b/test/file_test.cpp
index 8cb589f..cb6fb59 100644
--- a/test/file_test.cpp
+++ b/test/file_test.cpp
@@ -9,7 +9,8 @@
 #include <cstdio>
 #include <cstring>
 
-TEST_CASE("file can be read", "[file]") {
+TEST_CASE("file can be read", "[file]")
+{
     RenderObjectLeakChecker checker;
     auto file = ReadRiveFile("../../test/assets/two_artboards.riv");
 
@@ -20,7 +21,8 @@
     REQUIRE(file->artboard("One") != nullptr);
 }
 
-TEST_CASE("file with animation can be read", "[file]") {
+TEST_CASE("file with animation can be read", "[file]")
+{
     RenderObjectLeakChecker checker;
     auto file = ReadRiveFile("../../test/assets/juice.riv");
 
@@ -45,7 +47,8 @@
     REQUIRE(walkAnimation->numKeyedObjects() == 22);
 }
 
-TEST_CASE("artboards can be counted and accessed via index or name", "[file]") {
+TEST_CASE("artboards can be counted and accessed via index or name", "[file]")
+{
     RenderObjectLeakChecker checker;
     auto file = ReadRiveFile("../../test/assets/dependency_test.riv");
 
@@ -59,7 +62,8 @@
     REQUIRE(file->artboard("Blue") != nullptr);
 }
 
-TEST_CASE("dependencies are as expected", "[file]") {
+TEST_CASE("dependencies are as expected", "[file]")
+{
     RenderObjectLeakChecker checker;
     // ┌────┐
     // │Blue│
@@ -117,7 +121,8 @@
     REQUIRE(world[5] == 29.535156f);
 }
 
-TEST_CASE("long name in object is parsed correctly", "[file]") {
+TEST_CASE("long name in object is parsed correctly", "[file]")
+{
     RenderObjectLeakChecker checker;
     auto file = ReadRiveFile("../../test/assets/long_name.riv");
     auto artboard = file->artboard();
@@ -126,7 +131,8 @@
     REQUIRE(artboard->objects().size() == 7);
 }
 
-TEST_CASE("file with in-band images can have the stripped", "[file]") {
+TEST_CASE("file with in-band images can have the stripped", "[file]")
+{
     RenderObjectLeakChecker checker;
     FILE* fp = fopen("../../test/assets/jellyfish_test.riv", "rb");
     REQUIRE(fp != nullptr);
diff --git a/test/hittest_test.cpp b/test/hittest_test.cpp
index d0bff8a..73417d8 100644
--- a/test/hittest_test.cpp
+++ b/test/hittest_test.cpp
@@ -10,7 +10,8 @@
 
 using namespace rive;
 
-TEST_CASE("hittest-basics", "[hittest]") {
+TEST_CASE("hittest-basics", "[hittest]")
+{
     HitTester tester;
     tester.reset({10, 10, 12, 12});
     tester.move({0, 0});
@@ -31,14 +32,16 @@
     tester.reset(area);
 
     tester.move(pts[0]);
-    for (int i = 1; i < 4; ++i) {
+    for (int i = 1; i < 4; ++i)
+    {
         tester.line(pts[i]);
     }
     tester.close();
     REQUIRE(tester.test());
 }
 
-TEST_CASE("hittest-mesh", "[hittest]") {
+TEST_CASE("hittest-mesh", "[hittest]")
+{
 
     const IAABB area{10, 10, 12, 12};
 
diff --git a/test/ik_constraint_test.cpp b/test/ik_constraint_test.cpp
index b373818..04ddebd 100644
--- a/test/ik_constraint_test.cpp
+++ b/test/ik_constraint_test.cpp
@@ -9,7 +9,8 @@
 #include "rive_testing.hpp"
 #include <cstdio>
 
-TEST_CASE("ik with skinned bones orders correctly", "[file]") {
+TEST_CASE("ik with skinned bones orders correctly", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/complex_ik_dependency.riv");
 
     auto artboard = file->artboard();
@@ -20,8 +21,10 @@
     REQUIRE(artboard->find<rive::Bone>("Two") != nullptr);
     auto two = artboard->find<rive::Bone>("Two");
     rive::Skin* skin = nullptr;
-    for (auto object : artboard->objects()) {
-        if (object->is<rive::Skin>()) {
+    for (auto object : artboard->objects())
+    {
+        if (object->is<rive::Skin>())
+        {
             skin = object->as<rive::Skin>();
             break;
         }
diff --git a/test/ik_test.cpp b/test/ik_test.cpp
index f02aef0..874a063 100644
--- a/test/ik_test.cpp
+++ b/test/ik_test.cpp
@@ -6,7 +6,8 @@
 #include "rive_testing.hpp"
 #include <cstdio>
 
-TEST_CASE("two bone ik places bones correctly", "[file]") {
+TEST_CASE("two bone ik places bones correctly", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/two_bone_ik.riv");
     auto artboard = file->artboard();
 
@@ -78,7 +79,8 @@
                                    225.07647705078125f)));
 }
 
-TEST_CASE("ik keeps working after a lot of iterations", "[file]") {
+TEST_CASE("ik keeps working after a lot of iterations", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/two_bone_ik.riv");
     auto artboard = file->artboard();
 
@@ -109,7 +111,8 @@
     REQUIRE(std::find(boneB->dependents().begin(), boneB->dependents().end(), circleB) !=
             boneB->dependents().end());
 
-    for (int i = 0; i < 1000; i++) {
+    for (int i = 0; i < 1000; i++)
+    {
         animation->apply(artboard, 0.0f, 1.0f);
         artboard->advance(0.0f);
         REQUIRE(target->x() == 296.0f);
diff --git a/test/image_asset_test.cpp b/test/image_asset_test.cpp
index 4eb4a3d..2ec140e 100644
--- a/test/image_asset_test.cpp
+++ b/test/image_asset_test.cpp
@@ -11,7 +11,8 @@
 #include <catch.hpp>
 #include <cstdio>
 
-TEST_CASE("image assets loads correctly", "[assets]") {
+TEST_CASE("image assets loads correctly", "[assets]")
+{
     RenderObjectLeakChecker checker;
     auto file = ReadRiveFile("../../test/assets/walle.riv");
 
@@ -42,7 +43,8 @@
     file->artboard()->draw(&renderer);
 }
 
-TEST_CASE("out of band image assets loads correctly", "[assets]") {
+TEST_CASE("out of band image assets loads correctly", "[assets]")
+{
     RenderObjectLeakChecker checker;
     rive::NoOpFactory gEmptyFactory;
 
diff --git a/test/image_mesh_test.cpp b/test/image_mesh_test.cpp
index e04b7b2..eb3beb5 100644
--- a/test/image_mesh_test.cpp
+++ b/test/image_mesh_test.cpp
@@ -11,7 +11,8 @@
 #include <catch.hpp>
 #include <cstdio>
 
-TEST_CASE("image with mesh loads correctly", "[mesh]") {
+TEST_CASE("image with mesh loads correctly", "[mesh]")
+{
     auto file = ReadRiveFile("../../test/assets/tape.riv");
 
     auto node = file->artboard()->find("Tape body.png");
@@ -25,7 +26,8 @@
     REQUIRE(tape->mesh()->indices()->size() == 31 * 3); // Expect 31 triangles.
 }
 
-TEST_CASE("duplicating a mesh shares the indices", "[mesh]") {
+TEST_CASE("duplicating a mesh shares the indices", "[mesh]")
+{
     auto file = ReadRiveFile("../../test/assets/tape.riv");
 
     auto instance1 = file->artboardDefault();
diff --git a/test/instancing_test.cpp b/test/instancing_test.cpp
index d182928..4100951 100644
--- a/test/instancing_test.cpp
+++ b/test/instancing_test.cpp
@@ -9,7 +9,8 @@
 #include <catch.hpp>
 #include <cstdio>
 
-TEST_CASE("cloning an ellipse works", "[instancing]") {
+TEST_CASE("cloning an ellipse works", "[instancing]")
+{
     auto file = ReadRiveFile("../../test/assets/circle_clips.riv");
 
     auto node = file->artboard()->find<rive::Shape>("TopEllipse");
@@ -22,7 +23,8 @@
     delete clonedNode;
 }
 
-TEST_CASE("instancing artboard clones clipped properties", "[instancing]") {
+TEST_CASE("instancing artboard clones clipped properties", "[instancing]")
+{
     auto file = ReadRiveFile("../../test/assets/circle_clips.riv");
 
     REQUIRE(!file->artboard()->isInstance());
@@ -46,7 +48,8 @@
     artboard->draw(&renderer);
 }
 
-TEST_CASE("instancing artboard doesn't clone animations", "[instancing]") {
+TEST_CASE("instancing artboard doesn't clone animations", "[instancing]")
+{
     auto file = ReadRiveFile("../../test/assets/juice.riv");
 
     auto artboard = file->artboardDefault();
diff --git a/test/line_break_test.cpp b/test/line_break_test.cpp
index c56b831..da18244 100644
--- a/test/line_break_test.cpp
+++ b/test/line_break_test.cpp
@@ -14,17 +14,20 @@
 static rive::RenderTextRun append(std::vector<rive::Unichar>* unichars,
                                   rive::rcp<rive::RenderFont> font,
                                   float size,
-                                  const char text[]) {
+                                  const char text[])
+{
     const uint8_t* ptr = (const uint8_t*)text;
     uint32_t n = 0;
-    while (*ptr) {
+    while (*ptr)
+    {
         unichars->push_back(rive::UTF::NextUTF8(&ptr));
         n += 1;
     }
     return {std::move(font), size, n};
 }
 
-static rcp<RenderFont> loadFont(const char* filename) {
+static rcp<RenderFont> loadFont(const char* filename)
+{
     FILE* fp = fopen("../../test/assets/RobotoFlex.ttf", "rb");
     REQUIRE(fp != nullptr);
 
@@ -38,7 +41,8 @@
     return HBRenderFont::Decode(bytes);
 }
 
-TEST_CASE("line breaker separates words", "[line break]") {
+TEST_CASE("line breaker separates words", "[line break]")
+{
     auto font = loadFont("../../test/assets/RobotoFlex.ttf");
     REQUIRE(font != nullptr);
 
@@ -59,7 +63,8 @@
     REQUIRE(run.breaks[5] == 13);
 }
 
-TEST_CASE("line breaker handles multiple runs", "[line break]") {
+TEST_CASE("line breaker handles multiple runs", "[line break]")
+{
     auto font = loadFont("../../test/assets/RobotoFlex.ttf");
     REQUIRE(font != nullptr);
 
@@ -88,7 +93,8 @@
     }
 }
 
-TEST_CASE("line breaker handles returns", "[line break]") {
+TEST_CASE("line breaker handles returns", "[line break]")
+{
     auto font = loadFont("../../test/assets/RobotoFlex.ttf");
     REQUIRE(font != nullptr);
 
@@ -119,7 +125,8 @@
     }
 }
 
-TEST_CASE("line breaker builds lines", "[line break]") {
+TEST_CASE("line breaker builds lines", "[line break]")
+{
     auto font = loadFont("../../test/assets/RobotoFlex.ttf");
     REQUIRE(font != nullptr);
 
@@ -164,7 +171,8 @@
     }
 }
 
-TEST_CASE("line breaker deals with extremes", "[line break]") {
+TEST_CASE("line breaker deals with extremes", "[line break]")
+{
     auto font = loadFont("../../test/assets/RobotoFlex.ttf");
     REQUIRE(font != nullptr);
 
@@ -218,7 +226,8 @@
     }
 }
 
-TEST_CASE("line breaker breaks return characters", "[line break]") {
+TEST_CASE("line breaker breaks return characters", "[line break]")
+{
     auto font = loadFont("../../test/assets/RobotoFlex.ttf");
     REQUIRE(font != nullptr);
 
diff --git a/test/linear_animation_instance_test.cpp b/test/linear_animation_instance_test.cpp
index fa24fb0..d9b0519 100644
--- a/test/linear_animation_instance_test.cpp
+++ b/test/linear_animation_instance_test.cpp
@@ -5,7 +5,8 @@
 #include <catch.hpp>
 #include <cstdio>
 
-TEST_CASE("LinearAnimationInstance oneShot", "[animation]") {
+TEST_CASE("LinearAnimationInstance oneShot", "[animation]")
+{
     rive::NoOpFactory emptyFactory;
     // For each of these tests, we cons up a dummy artboard/instance
     // just to make the animations happy.
@@ -39,7 +40,8 @@
     delete linearAnimation;
 }
 
-TEST_CASE("LinearAnimationInstance oneShot <-", "[animation]") {
+TEST_CASE("LinearAnimationInstance oneShot <-", "[animation]")
+{
     rive::NoOpFactory emptyFactory;
     rive::Artboard ab(&emptyFactory);
     auto abi = ab.instance();
@@ -87,7 +89,8 @@
     delete linearAnimation;
 }
 
-TEST_CASE("LinearAnimationInstance loop ->", "[animation]") {
+TEST_CASE("LinearAnimationInstance loop ->", "[animation]")
+{
     rive::NoOpFactory emptyFactory;
     rive::Artboard ab(&emptyFactory);
     auto abi = ab.instance();
@@ -119,7 +122,8 @@
     delete linearAnimation;
 }
 
-TEST_CASE("LinearAnimationInstance loop <-", "[animation]") {
+TEST_CASE("LinearAnimationInstance loop <-", "[animation]")
+{
     rive::NoOpFactory emptyFactory;
     rive::Artboard ab(&emptyFactory);
     auto abi = ab.instance();
@@ -161,7 +165,8 @@
     delete linearAnimation;
 }
 
-TEST_CASE("LinearAnimationInstance loop <- work area", "[animation]") {
+TEST_CASE("LinearAnimationInstance loop <- work area", "[animation]")
+{
     rive::NoOpFactory emptyFactory;
     rive::Artboard ab(&emptyFactory);
     auto abi = ab.instance();
@@ -216,7 +221,8 @@
     delete linearAnimation;
 }
 
-TEST_CASE("LinearAnimationInstance pingpong ->", "[animation]") {
+TEST_CASE("LinearAnimationInstance pingpong ->", "[animation]")
+{
     rive::NoOpFactory emptyFactory;
     rive::Artboard ab(&emptyFactory);
     auto abi = ab.instance();
@@ -249,7 +255,8 @@
     delete linearAnimation;
 }
 
-TEST_CASE("LinearAnimationInstance pingpong <-", "[animation]") {
+TEST_CASE("LinearAnimationInstance pingpong <-", "[animation]")
+{
     rive::NoOpFactory emptyFactory;
     rive::Artboard ab(&emptyFactory);
     auto abi = ab.instance();
@@ -294,7 +301,8 @@
     delete linearAnimation;
 }
 
-TEST_CASE("LinearAnimationInstance override loop", "[animation]") {
+TEST_CASE("LinearAnimationInstance override loop", "[animation]")
+{
     rive::NoOpFactory emptyFactory;
     rive::Artboard ab(&emptyFactory);
     auto abi = ab.instance();
diff --git a/test/metrics_path_test.cpp b/test/metrics_path_test.cpp
index 6e6bf4b..44efab7 100644
--- a/test/metrics_path_test.cpp
+++ b/test/metrics_path_test.cpp
@@ -1,7 +1,8 @@
 #include <catch.hpp>
 #include <rive/shapes/metrics_path.hpp>
 
-TEST_CASE("path metrics compute correctly", "[bezier]") {
+TEST_CASE("path metrics compute correctly", "[bezier]")
+{
     // TODO: fix these based on new logic
     // Make a square with sides length 10.
     // rive::OnlyMetricsPath path;
diff --git a/test/node_test.cpp b/test/node_test.cpp
index 36f371d..0fecbad 100644
--- a/test/node_test.cpp
+++ b/test/node_test.cpp
@@ -3,7 +3,8 @@
 
 TEST_CASE("Node instances", "[core]") { REQUIRE(rive::Node().x() == 0.0f); }
 
-TEST_CASE("nodeX function return x value", "[node]") {
+TEST_CASE("nodeX function return x value", "[node]")
+{
     rive::Node* node = new rive::Node();
     REQUIRE(node->x() == 0.0f);
     node->x(2.0f);
diff --git a/test/path_test.cpp b/test/path_test.cpp
index 5201c79..7d0839d 100644
--- a/test/path_test.cpp
+++ b/test/path_test.cpp
@@ -13,10 +13,19 @@
 
 // Need a specialized "noop" factory that does make an inspectable Path
 
-namespace {
-enum class TestPathCommandType { MoveTo, LineTo, CubicTo, Reset, Close };
+namespace
+{
+enum class TestPathCommandType
+{
+    MoveTo,
+    LineTo,
+    CubicTo,
+    Reset,
+    Close
+};
 
-struct TestPathCommand {
+struct TestPathCommand
+{
     TestPathCommandType command;
     float x;
     float y;
@@ -26,10 +35,12 @@
     float outY;
 };
 
-class TestRenderPath : public rive::RenderPath {
+class TestRenderPath : public rive::RenderPath
+{
 public:
     std::vector<TestPathCommand> commands;
-    void reset() override {
+    void reset() override
+    {
         commands.emplace_back(
             (TestPathCommand){TestPathCommandType::Reset, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f});
     }
@@ -38,33 +49,40 @@
     void addPath(rive::CommandPath* path, const rive::Mat2D& transform) override {}
     void addRenderPath(rive::RenderPath* path, const rive::Mat2D& transform) override {}
 
-    void moveTo(float x, float y) override {
+    void moveTo(float x, float y) override
+    {
         commands.emplace_back(
             (TestPathCommand){TestPathCommandType::MoveTo, x, y, 0.0f, 0.0f, 0.0f, 0.0f});
     }
-    void lineTo(float x, float y) override {
+    void lineTo(float x, float y) override
+    {
         commands.emplace_back(
             (TestPathCommand){TestPathCommandType::LineTo, x, y, 0.0f, 0.0f, 0.0f, 0.0f});
     }
-    void cubicTo(float ox, float oy, float ix, float iy, float x, float y) override {
+    void cubicTo(float ox, float oy, float ix, float iy, float x, float y) override
+    {
         commands.emplace_back(
             (TestPathCommand){TestPathCommandType::CubicTo, x, y, ix, iy, ox, oy});
     }
-    void close() override {
+    void close() override
+    {
         commands.emplace_back(
             (TestPathCommand){TestPathCommandType::Close, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f});
     }
 };
 
-class TestNoOpFactory : public rive::NoOpFactory {
+class TestNoOpFactory : public rive::NoOpFactory
+{
 public:
-    std::unique_ptr<rive::RenderPath> makeEmptyRenderPath() override {
+    std::unique_ptr<rive::RenderPath> makeEmptyRenderPath() override
+    {
         return std::make_unique<TestRenderPath>();
     }
 };
 } // namespace
 
-TEST_CASE("rectangle path builds expected commands", "[path]") {
+TEST_CASE("rectangle path builds expected commands", "[path]")
+{
     TestNoOpFactory emptyFactory;
     rive::Artboard artboard(&emptyFactory);
     rive::Shape* shape = new rive::Shape();
@@ -99,7 +117,8 @@
     REQUIRE(path->commands[6].command == TestPathCommandType::Close);
 }
 
-TEST_CASE("rounded rectangle path builds expected commands", "[path]") {
+TEST_CASE("rounded rectangle path builds expected commands", "[path]")
+{
     TestNoOpFactory emptyFactory;
     rive::Artboard artboard(&emptyFactory);
     rive::Shape* shape = new rive::Shape();
@@ -161,7 +180,8 @@
     REQUIRE(path->commands[10].command == TestPathCommandType::Close);
 }
 
-TEST_CASE("ellipse path builds expected commands", "[path]") {
+TEST_CASE("ellipse path builds expected commands", "[path]")
+{
     TestNoOpFactory emptyFactory;
     rive::Artboard artboard(&emptyFactory);
     rive::Ellipse* ellipse = new rive::Ellipse();
diff --git a/test/raw_path_test.cpp b/test/raw_path_test.cpp
index 460542b..0eca6c3 100644
--- a/test/raw_path_test.cpp
+++ b/test/raw_path_test.cpp
@@ -12,7 +12,8 @@
 
 using namespace rive;
 
-TEST_CASE("rawpath-basics", "[rawpath]") {
+TEST_CASE("rawpath-basics", "[rawpath]")
+{
     RawPath path;
 
     REQUIRE(path.empty());
@@ -33,7 +34,8 @@
     REQUIRE(path.bounds() == AABB{-1, -2, 3, 5});
 }
 
-TEST_CASE("rawpath-add-helpers", "[rawpath]") {
+TEST_CASE("rawpath-add-helpers", "[rawpath]")
+{
     RawPath path;
 
     path.addRect({1, 1, 5, 6});
@@ -57,21 +59,25 @@
     };
     constexpr auto size = sizeof(pts) / sizeof(pts[0]);
 
-    for (auto isClosed : {false, true}) {
+    for (auto isClosed : {false, true})
+    {
         path = RawPath();
         path.addPoly({pts, size}, isClosed);
         REQUIRE(path.bounds() == AABB{1, -100, 100, 5});
         REQUIRE(path.points().size() == size);
         REQUIRE(path.verbs().size() == size + isClosed);
 
-        for (size_t i = 0; i < size; ++i) {
+        for (size_t i = 0; i < size; ++i)
+        {
             REQUIRE(path.points()[i] == pts[i]);
         }
         REQUIRE(path.verbs()[0] == PathVerb::move);
-        for (size_t i = 1; i < size; ++i) {
+        for (size_t i = 1; i < size; ++i)
+        {
             REQUIRE(path.verbs()[i] == PathVerb::line);
         }
-        if (isClosed) {
+        if (isClosed)
+        {
             REQUIRE(path.verbs()[size] == PathVerb::close);
         }
     }
@@ -82,17 +88,20 @@
 static void check_iter(RawPath::Iter& iter,
                        const RawPath::Iter& end,
                        PathVerb expectedVerb,
-                       std::vector<Vec2D> expectedPts) {
+                       std::vector<Vec2D> expectedPts)
+{
     REQUIRE(iter != end);
     auto [verb, pts] = *iter;
     REQUIRE(verb == expectedVerb);
-    for (size_t i = 0; i < expectedPts.size(); ++i) {
+    for (size_t i = 0; i < expectedPts.size(); ++i)
+    {
         CHECK(pts[i] == expectedPts[i]);
     }
     ++iter;
 }
 
-TEST_CASE("rawpath-iter", "[rawpath]") {
+TEST_CASE("rawpath-iter", "[rawpath]")
+{
     {
         RawPath rp;
         REQUIRE(rp.begin() == rp.end());
@@ -156,7 +165,8 @@
     }
 }
 
-TEST_CASE("addPath", "[rawpath]") {
+TEST_CASE("addPath", "[rawpath]")
+{
     using PathMaker = void (*)(RawPath * sink);
 
     const PathMaker makers[] = {
@@ -184,7 +194,8 @@
         RawPath p;
         m0(&p);
         m1(&p);
-        if (mx) {
+        if (mx)
+        {
             p.transformInPlace(*mx);
         }
         return p;
@@ -202,8 +213,10 @@
         return p;
     };
 
-    for (auto i = 0; i < N; ++i) {
-        for (auto j = 0; j < N; ++j) {
+    for (auto i = 0; i < N; ++i)
+    {
+        for (auto j = 0; j < N; ++j)
+        {
             RawPath p0, p1;
 
             p0 = direct(makers[i], makers[j], nullptr);
@@ -218,7 +231,8 @@
     }
 }
 
-TEST_CASE("bounds", "[rawpath]") {
+TEST_CASE("bounds", "[rawpath]")
+{
     RawPath path;
     AABB bounds;
     srand(0);
@@ -230,32 +244,42 @@
         bounds.maxY = std::max(bounds.maxY, pt.y);
         return pt;
     };
-    for (int numVerbs = 1; numVerbs < 1 << 16; numVerbs <<= 1) {
+    for (int numVerbs = 1; numVerbs < 1 << 16; numVerbs <<= 1)
+    {
         path.rewind();
         bounds.minX = bounds.minY = std::numeric_limits<float>::infinity();
         bounds.maxX = bounds.maxY = -std::numeric_limits<float>::infinity();
-        for (int i = 0; i < numVerbs; ++i) {
-            switch (rand() % 5) {
-                case 0: path.move(randPt()); break;
+        for (int i = 0; i < numVerbs; ++i)
+        {
+            switch (rand() % 5)
+            {
+                case 0:
+                    path.move(randPt());
+                    break;
                 case 1:
-                    if (path.empty()) { // Account for the implicit moveTo(0).
+                    if (path.empty())
+                    { // Account for the implicit moveTo(0).
                         bounds = {};
                     }
                     path.line(randPt());
                     break;
                 case 2:
-                    if (path.empty()) { // Account for the implicit moveTo(0).
+                    if (path.empty())
+                    { // Account for the implicit moveTo(0).
                         bounds = {};
                     }
                     path.quad(randPt(), randPt());
                     break;
                 case 3:
-                    if (path.empty()) { // Account for the implicit moveTo(0).
+                    if (path.empty())
+                    { // Account for the implicit moveTo(0).
                         bounds = {};
                     }
                     path.cubic(randPt(), randPt(), randPt());
                     break;
-                case 4: path.close(); break;
+                case 4:
+                    path.close();
+                    break;
             }
         }
         AABB pathBounds = path.bounds();
diff --git a/test/reader_test.cpp b/test/reader_test.cpp
index 9178cd3..deea9c7 100644
--- a/test/reader_test.cpp
+++ b/test/reader_test.cpp
@@ -1,7 +1,8 @@
 #include <catch.hpp>
 #include <rive/core/reader.h>
 
-TEST_CASE("uint leb decoder", "[reader]") {
+TEST_CASE("uint leb decoder", "[reader]")
+{
     uint64_t result;
 
     uint8_t encoded1[] = {0x01};
@@ -17,7 +18,8 @@
     REQUIRE(result == 624485);
 }
 
-TEST_CASE("string decoder", "[reader]") {
+TEST_CASE("string decoder", "[reader]")
+{
     char* str = strdup("New Artboard");
     uint8_t str_bytes[] = {0x4E, 0x65, 0x77, 0x20, 0x41, 0x72, 0x74, 0x62, 0x6F, 0x61, 0x72, 0x64};
     // Length of string + 1 is needed to add the null terminator
@@ -32,7 +34,8 @@
     delete decoded_str;
 }
 
-TEST_CASE("float decoder", "[reader]") {
+TEST_CASE("float decoder", "[reader]")
+{
     float decoded_num;
     uint64_t bytes_read;
 
@@ -55,7 +58,8 @@
     REQUIRE(bytes_read == 0);
 }
 
-TEST_CASE("byte decoder", "[reader") {
+TEST_CASE("byte decoder", "[reader")
+{
     uint8_t decoded_byte;
     // luigi: commented this out as it was giving a warning (I added -Wall to
     // the compiler flags). Warning was:
diff --git a/test/refcnt_test.cpp b/test/refcnt_test.cpp
index 211825a..c62363b 100644
--- a/test/refcnt_test.cpp
+++ b/test/refcnt_test.cpp
@@ -8,7 +8,8 @@
 
 using namespace rive;
 
-class MyRefCnt : public RefCnt<MyRefCnt> {
+class MyRefCnt : public RefCnt<MyRefCnt>
+{
 public:
     MyRefCnt() {}
     MyRefCnt(int, float, bool) {}
@@ -16,7 +17,8 @@
     void require_count(int value) { REQUIRE(this->debugging_refcnt() == value); }
 };
 
-TEST_CASE("refcnt", "[basics]") {
+TEST_CASE("refcnt", "[basics]")
+{
     MyRefCnt my;
     REQUIRE(my.debugging_refcnt() == 1);
     my.ref();
@@ -34,7 +36,8 @@
     safe_unref((MyRefCnt*)nullptr);
 }
 
-TEST_CASE("rcp", "[basics]") {
+TEST_CASE("rcp", "[basics]")
+{
     rcp<MyRefCnt> r0(nullptr);
 
     REQUIRE(r0.get() == nullptr);
diff --git a/test/rive_file_reader.hpp b/test/rive_file_reader.hpp
index bf01652..9fe969e 100644
--- a/test/rive_file_reader.hpp
+++ b/test/rive_file_reader.hpp
@@ -9,11 +9,12 @@
 
 static rive::NoOpFactory gNoOpFactory;
 
-static inline std::unique_ptr<rive::File>
-ReadRiveFile(const char path[],
-             rive::Factory* factory = nullptr,
-             rive::FileAssetResolver* resolver = nullptr) {
-    if (!factory) {
+static inline std::unique_ptr<rive::File> ReadRiveFile(const char path[],
+                                                       rive::Factory* factory = nullptr,
+                                                       rive::FileAssetResolver* resolver = nullptr)
+{
+    if (!factory)
+    {
         factory = &gNoOpFactory;
     }
 
@@ -36,19 +37,24 @@
     return file;
 }
 
-class RenderObjectLeakChecker {
+class RenderObjectLeakChecker
+{
     int m_before[rive::Counter::kNumTypes];
 
 public:
-    RenderObjectLeakChecker() {
+    RenderObjectLeakChecker()
+    {
         std::copy(rive::Counter::counts,
                   rive::Counter::counts + rive::Counter::kNumTypes,
                   m_before);
     }
-    ~RenderObjectLeakChecker() {
+    ~RenderObjectLeakChecker()
+    {
         const int* after = rive::Counter::counts;
-        for (int i = 0; i < rive::Counter::kNumTypes; ++i) {
-            if (rive::Counter::counts[i] != m_before[i]) {
+        for (int i = 0; i < rive::Counter::kNumTypes; ++i)
+        {
+            if (rive::Counter::counts[i] != m_before[i])
+            {
                 printf("[%d] before:%d after:%d\n", i, m_before[i], after[i]);
                 REQUIRE(false);
             }
diff --git a/test/rive_testing.cpp b/test/rive_testing.cpp
index ac27630..aa7691e 100644
--- a/test/rive_testing.cpp
+++ b/test/rive_testing.cpp
@@ -1,9 +1,12 @@
 #include "rive_testing.hpp"
 
-bool aboutEqual(const rive::Mat2D& a, const rive::Mat2D& b) {
+bool aboutEqual(const rive::Mat2D& a, const rive::Mat2D& b)
+{
     const float epsilon = 0.0001f;
-    for (int i = 0; i < 6; i++) {
-        if (std::fabs(a[i] - b[i]) > epsilon) {
+    for (int i = 0; i < 6; i++)
+    {
+        if (std::fabs(a[i] - b[i]) > epsilon)
+        {
             return false;
         }
     }
diff --git a/test/rive_testing.hpp b/test/rive_testing.hpp
index db1308f..f790280 100644
--- a/test/rive_testing.hpp
+++ b/test/rive_testing.hpp
@@ -7,9 +7,12 @@
 
 bool aboutEqual(const rive::Mat2D& a, const rive::Mat2D& b);
 
-namespace Catch {
-template <> struct StringMaker<rive::Mat2D> {
-    static std::string convert(rive::Mat2D const& value) {
+namespace Catch
+{
+template <> struct StringMaker<rive::Mat2D>
+{
+    static std::string convert(rive::Mat2D const& value)
+    {
         std::ostringstream os;
         os << value[0] << ", " << value[1] << ", " << value[2] << ", " << value[3] << ", "
            << value[4] << ", " << value[5];
diff --git a/test/rotation_constraint_test.cpp b/test/rotation_constraint_test.cpp
index 5419e87..3acd28b 100644
--- a/test/rotation_constraint_test.cpp
+++ b/test/rotation_constraint_test.cpp
@@ -8,7 +8,8 @@
 #include "rive_testing.hpp"
 #include <cstdio>
 
-TEST_CASE("rotation constraint updates world transform", "[file]") {
+TEST_CASE("rotation constraint updates world transform", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/rotation_constraint.riv");
 
     auto artboard = file->artboard();
diff --git a/test/scale_constraint_test.cpp b/test/scale_constraint_test.cpp
index efe76ac..f5d2333 100644
--- a/test/scale_constraint_test.cpp
+++ b/test/scale_constraint_test.cpp
@@ -8,7 +8,8 @@
 #include "rive_testing.hpp"
 #include <cstdio>
 
-TEST_CASE("scale constraint updates world transform", "[file]") {
+TEST_CASE("scale constraint updates world transform", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/scale_constraint.riv");
 
     auto artboard = file->artboard();
diff --git a/test/simd_test.cpp b/test/simd_test.cpp
index 1c45b54..66199e7 100644
--- a/test/simd_test.cpp
+++ b/test/simd_test.cpp
@@ -7,13 +7,15 @@
 #include "rive/math/simd.hpp"
 #include <limits>
 
-namespace rive {
+namespace rive
+{
 
 constexpr float kInf = std::numeric_limits<float>::infinity();
 constexpr float kNaN = std::numeric_limits<float>::quiet_NaN();
 
 // Verify the simd float types are IEEE 754 compliant for infinity and NaN.
-TEST_CASE("ieee-compliance", "[simd]") {
+TEST_CASE("ieee-compliance", "[simd]")
+{
     float4 test = float4{1, -kInf, 1, 4} / float4{0, 2, kInf, 4};
     CHECK(simd::all(test == float4{kInf, -kInf, 0, 1}));
 
@@ -30,7 +32,8 @@
     test.xy /= float2{kInf, 0};
     test.z *= kInf;
     test.w -= kInf;
-    for (int i = 0; i < 4; ++i) {
+    for (int i = 0; i < 4; ++i)
+    {
         CHECK(std::isnan(test[i]));
     }
     // NaN always fails comparisons.
@@ -48,7 +51,8 @@
 }
 
 // Check that ?: works on vector and scalar conditions.
-TEST_CASE("ternary-operator", "[simd]") {
+TEST_CASE("ternary-operator", "[simd]")
+{
     // Vector condition.
     float4 f4 = int4{1, 2, 3, 4} < int4{4, 3, 2, 1} ? float4(-1) : 1.f;
     CHECK(simd::all(f4 == float4{-1, -1, 1, 1}));
@@ -63,7 +67,8 @@
 }
 
 // Check simd::min/max compliance.
-TEST_CASE("min-max", "[simd]") {
+TEST_CASE("min-max", "[simd]")
+{
     float4 f4 = simd::min(float4{1, 2, 3, 4}, float4{4, 3, 2});
     CHECK(simd::all(f4 == float4{1, 2, 2, 0}));
     f4 = simd::max(float4{1, 2, 3, 4}, float4{4, 3, 2});
@@ -100,7 +105,8 @@
 }
 
 // Check simd::abs.
-TEST_CASE("abs", "[simd]") {
+TEST_CASE("abs", "[simd]")
+{
 
     CHECK(simd::all(simd::abs(float4{-1, 2, -3, 4}) == float4{1, 2, 3, 4}));
     CHECK(simd::all(simd::abs(float2{-5, 6}) == float2{5, 6}));
diff --git a/test/simple_array_test.cpp b/test/simple_array_test.cpp
index cdfd3f2..78e7463 100644
--- a/test/simple_array_test.cpp
+++ b/test/simple_array_test.cpp
@@ -8,7 +8,8 @@
 
 using namespace rive;
 
-TEST_CASE("array initializes as expected", "[simple array]") {
+TEST_CASE("array initializes as expected", "[simple array]")
+{
     SimpleArray<int> array;
     REQUIRE(array.empty());
     REQUIRE(array.size() == 0);
@@ -16,7 +17,8 @@
     REQUIRE(array.begin() == array.end());
 }
 
-TEST_CASE("simple array can be created", "[simple array]") {
+TEST_CASE("simple array can be created", "[simple array]")
+{
     SimpleArray<int> array({0, 1, 2, 3, 4, 5, 6, 7, 8, 9});
 
     REQUIRE(!array.empty());
@@ -26,7 +28,8 @@
 
     int counter = 0;
     int sum = 0;
-    for (auto s : array) {
+    for (auto s : array)
+    {
         counter += 1;
         sum += s;
     }
@@ -34,17 +37,20 @@
     REQUIRE(sum == 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9);
 }
 
-TEST_CASE("can iterate simple array", "[simple array]") {
+TEST_CASE("can iterate simple array", "[simple array]")
+{
     const int carray[] = {2, 4, 8, 16};
     SimpleArray<int> array(carray);
     int expect = 2;
-    for (auto value : array) {
+    for (auto value : array)
+    {
         REQUIRE(value == expect);
         expect *= 2;
     }
 }
 
-TEST_CASE("can build up a simple array", "[simple array]") {
+TEST_CASE("can build up a simple array", "[simple array]")
+{
     SimpleArrayBuilder<int> builder;
     builder.add(1);
     builder.add(2);
@@ -57,7 +63,8 @@
 
     int iterationCount = 0;
     int expect = 1;
-    for (auto value : builder) {
+    for (auto value : builder)
+    {
         REQUIRE(value == expect++);
         iterationCount++;
     }
@@ -73,11 +80,13 @@
     REQUIRE(SimpleArrayTesting::reallocCount == reallocCountBeforeMove + 1);
 }
 
-struct StructA {
+struct StructA
+{
     rive::SimpleArray<uint32_t> numbers;
 };
 
-static SimpleArray<StructA> buildStructs() {
+static SimpleArray<StructA> buildStructs()
+{
     SimpleArrayTesting::resetCounters();
 
     SimpleArray<uint32_t> numbersA({33, 22, 44, 66});
@@ -109,7 +118,8 @@
     return structs;
 }
 
-TEST_CASE("arrays of arrays work", "[simple array]") {
+TEST_CASE("arrays of arrays work", "[simple array]")
+{
     auto structs = buildStructs();
     REQUIRE(SimpleArrayTesting::mallocCount == 3);
     REQUIRE(SimpleArrayTesting::reallocCount == 0);
@@ -118,11 +128,13 @@
     REQUIRE(structs[1].numbers.size() == 3);
 }
 
-static SimpleArray<StructA> buildStructsWithBuilder() {
+static SimpleArray<StructA> buildStructsWithBuilder()
+{
     SimpleArrayTesting::resetCounters();
     SimpleArrayBuilder<StructA> structs(2);
     REQUIRE(SimpleArrayTesting::mallocCount == 1);
-    for (int i = 0; i < 3; i++) {
+    for (int i = 0; i < 3; i++)
+    {
         SimpleArray<uint32_t> numbers({33, 22, 44, 66});
         StructA data = {.numbers = std::move(numbers)};
         structs.add(std::move(data));
@@ -133,7 +145,8 @@
     return std::move(structs);
 }
 
-TEST_CASE("builder arrays of arrays work", "[simple array]") {
+TEST_CASE("builder arrays of arrays work", "[simple array]")
+{
     auto structs = buildStructsWithBuilder();
     // alloc counters should still be the same
     REQUIRE(SimpleArrayTesting::mallocCount == 4);
@@ -141,7 +154,8 @@
     REQUIRE(SimpleArrayTesting::reallocCount == 2);
 }
 
-TEST_CASE("builders can be reset", "[simple array]") {
+TEST_CASE("builders can be reset", "[simple array]")
+{
     SimpleArrayTesting::resetCounters();
     SimpleArrayBuilder<uint32_t> builder(3);
     builder.add(1);
diff --git a/test/span_test.cpp b/test/span_test.cpp
index a4c6ae5..a2ddfb6 100644
--- a/test/span_test.cpp
+++ b/test/span_test.cpp
@@ -9,7 +9,8 @@
 
 using namespace rive;
 
-TEST_CASE("basics", "[span]") {
+TEST_CASE("basics", "[span]")
+{
     Span<int> span;
     REQUIRE(span.empty());
     REQUIRE(span.size() == 0);
@@ -27,7 +28,8 @@
 
     int counter = 0;
     int sum = 0;
-    for (auto s : span) {
+    for (auto s : span)
+    {
         counter += 1;
         sum += s;
     }
@@ -47,7 +49,8 @@
 static void funca(Span<int> span) {}
 static void funcb(Span<const int> span) {}
 
-TEST_CASE("const-and-containers", "[span]") {
+TEST_CASE("const-and-containers", "[span]")
+{
     const int carray[] = {1, 2, 3, 4};
     funcb({carray, 4});
 
@@ -62,12 +65,14 @@
     funcb(v);
 }
 
-TEST_CASE("can iterate span", "[span]") {
+TEST_CASE("can iterate span", "[span]")
+{
     const int carray[] = {2, 4, 8, 16};
 
     auto span = Span(carray);
     int expect = 2;
-    for (auto value : span) {
+    for (auto value : span)
+    {
         REQUIRE(value == expect);
         expect *= 2;
     }
diff --git a/test/state_machine_event_test.cpp b/test/state_machine_event_test.cpp
index 01e77ae..00586c0 100644
--- a/test/state_machine_event_test.cpp
+++ b/test/state_machine_event_test.cpp
@@ -18,7 +18,8 @@
 #include "rive_file_reader.hpp"
 #include <cstdio>
 
-TEST_CASE("file with state machine listeners be read", "[file]") {
+TEST_CASE("file with state machine listeners be read", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/bullet_man.riv");
 
     auto artboard = file->artboard("Bullet Man");
@@ -63,7 +64,8 @@
     REQUIRE(inputChange3->as<rive::ListenerInputChange>()->inputId() == 2);
 }
 
-TEST_CASE("hit testing via a state machine works", "[file]") {
+TEST_CASE("hit testing via a state machine works", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/bullet_man.riv");
 
     auto artboard = file->artboard("Bullet Man")->instance();
@@ -85,7 +87,8 @@
     REQUIRE(trigger->didFire());
 }
 
-TEST_CASE("hit a toggle boolean listener", "[file]") {
+TEST_CASE("hit a toggle boolean listener", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/light_switch.riv");
 
     auto artboard = file->artboard()->instance();
diff --git a/test/state_machine_test.cpp b/test/state_machine_test.cpp
index 3424c5f..7f20e6d 100644
--- a/test/state_machine_test.cpp
+++ b/test/state_machine_test.cpp
@@ -14,7 +14,8 @@
 #include "rive_file_reader.hpp"
 #include <cstdio>
 
-TEST_CASE("file with state machine be read", "[file]") {
+TEST_CASE("file with state machine be read", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/rocket.riv");
 
     auto artboard = file->artboard();
@@ -44,9 +45,11 @@
     REQUIRE(layer->exitState() != nullptr);
 
     int foundAnimationStates = 0;
-    for (int i = 0; i < layer->stateCount(); i++) {
+    for (int i = 0; i < layer->stateCount(); i++)
+    {
         auto state = layer->state(i);
-        if (state->is<rive::AnimationState>()) {
+        if (state->is<rive::AnimationState>())
+        {
             foundAnimationStates++;
             REQUIRE(state->as<rive::AnimationState>()->animation() != nullptr);
         }
@@ -63,9 +66,11 @@
 
     auto idleState = stateTo->as<rive::AnimationState>();
     REQUIRE(idleState->transitionCount() == 2);
-    for (int i = 0; i < idleState->transitionCount(); i++) {
+    for (int i = 0; i < idleState->transitionCount(); i++)
+    {
         auto transition = idleState->transition(i);
-        if (transition->stateTo()->as<rive::AnimationState>()->animation()->name() == "Roll_over") {
+        if (transition->stateTo()->as<rive::AnimationState>()->animation()->name() == "Roll_over")
+        {
             // Check the condition
             REQUIRE(transition->conditionCount() == 1);
         }
@@ -82,7 +87,8 @@
     REQUIRE(smi.currentAnimationCount() == 0);
 }
 
-TEST_CASE("file with blend states loads correctly", "[file]") {
+TEST_CASE("file with blend states loads correctly", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/blend_test.riv");
 
     auto artboard = file->artboard();
@@ -137,7 +143,8 @@
             nullptr);
 }
 
-TEST_CASE("animation state with no animation doesn't crash", "[file]") {
+TEST_CASE("animation state with no animation doesn't crash", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/multiple_state_machines.riv");
 
     auto artboard = file->artboard();
diff --git a/test/stroke_test.cpp b/test/stroke_test.cpp
index ed47ee1..392c836 100644
--- a/test/stroke_test.cpp
+++ b/test/stroke_test.cpp
@@ -10,7 +10,8 @@
 #include <catch.hpp>
 #include <cstdio>
 
-TEST_CASE("stroke can be looked up at runtime", "[file]") {
+TEST_CASE("stroke can be looked up at runtime", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/stroke_name_test.riv");
 
     auto artboard = file->artboard();
diff --git a/test/transform_constraint_test.cpp b/test/transform_constraint_test.cpp
index 64f1f75..315a3c4 100644
--- a/test/transform_constraint_test.cpp
+++ b/test/transform_constraint_test.cpp
@@ -7,7 +7,8 @@
 #include "rive_testing.hpp"
 #include <cstdio>
 
-TEST_CASE("transform constraint updates world transform", "[file]") {
+TEST_CASE("transform constraint updates world transform", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/transform_constraint.riv");
 
     auto artboard = file->artboard();
diff --git a/test/translation_constraint_test.cpp b/test/translation_constraint_test.cpp
index 5452019..b38af62 100644
--- a/test/translation_constraint_test.cpp
+++ b/test/translation_constraint_test.cpp
@@ -8,7 +8,8 @@
 #include "rive_testing.hpp"
 #include <cstdio>
 
-TEST_CASE("translation constraint updates world transform", "[file]") {
+TEST_CASE("translation constraint updates world transform", "[file]")
+{
     auto file = ReadRiveFile("../../test/assets/translation_constraint.riv");
 
     auto artboard = file->artboard();
diff --git a/utils/no_op_factory.cpp b/utils/no_op_factory.cpp
index c187a46..9058301 100644
--- a/utils/no_op_factory.cpp
+++ b/utils/no_op_factory.cpp
@@ -3,12 +3,15 @@
 
 using namespace rive;
 
-namespace {
-class NoOpRenderImage : public RenderImage {
+namespace
+{
+class NoOpRenderImage : public RenderImage
+{
 public:
 };
 
-class NoOpRenderPaint : public RenderPaint {
+class NoOpRenderPaint : public RenderPaint
+{
 public:
     void color(unsigned int value) override {}
     void style(RenderPaintStyle value) override {}
@@ -20,7 +23,8 @@
     void invalidateStroke() override {}
 };
 
-class NoOpRenderPath : public RenderPath {
+class NoOpRenderPath : public RenderPath
+{
 public:
     void reset() override {}
 
@@ -45,7 +49,8 @@
                                                   float ey,
                                                   const ColorInt colors[], // [count]
                                                   const float stops[],     // [count]
-                                                  size_t count) {
+                                                  size_t count)
+{
     return nullptr;
 }
 
@@ -54,22 +59,27 @@
                                                   float radius,
                                                   const ColorInt colors[], // [count]
                                                   const float stops[],     // [count]
-                                                  size_t count) {
+                                                  size_t count)
+{
     return nullptr;
 }
 
-std::unique_ptr<RenderPath> NoOpFactory::makeRenderPath(RawPath&, FillRule) {
+std::unique_ptr<RenderPath> NoOpFactory::makeRenderPath(RawPath&, FillRule)
+{
     return std::make_unique<NoOpRenderPath>();
 }
 
-std::unique_ptr<RenderPath> NoOpFactory::makeEmptyRenderPath() {
+std::unique_ptr<RenderPath> NoOpFactory::makeEmptyRenderPath()
+{
     return std::make_unique<NoOpRenderPath>();
 }
 
-std::unique_ptr<RenderPaint> NoOpFactory::makeRenderPaint() {
+std::unique_ptr<RenderPaint> NoOpFactory::makeRenderPaint()
+{
     return std::make_unique<NoOpRenderPaint>();
 }
 
-std::unique_ptr<RenderImage> NoOpFactory::decodeImage(Span<const uint8_t>) {
+std::unique_ptr<RenderImage> NoOpFactory::decodeImage(Span<const uint8_t>)
+{
     return std::unique_ptr<NoOpRenderImage>();
 }
diff --git a/utils/rive_utf.cpp b/utils/rive_utf.cpp
index 6be3dee..3ff6fdf 100644
--- a/utils/rive_utf.cpp
+++ b/utils/rive_utf.cpp
@@ -7,16 +7,19 @@
 
 using namespace rive;
 
-int UTF::CountUTF8Length(const uint8_t utf8[]) {
+int UTF::CountUTF8Length(const uint8_t utf8[])
+{
     unsigned lead = *utf8;
     assert(lead != 0xFF);
     assert((lead & 0xC0) != 0x80); // 10xxxxxx is not a legal lead byte
-    if ((lead & 0x80) == 0) {
+    if ((lead & 0x80) == 0)
+    {
         return 1;
     }
     int n = 1;
     lead <<= 1;
-    while (lead & 0x80) {
+    while (lead & 0x80)
+    {
         n += 1;
         lead <<= 1;
     }
@@ -26,7 +29,8 @@
 
 // Return the unichar pointed to by the utf8 pointer, and then
 // update the pointer to point to the next sequence.
-Unichar UTF::NextUTF8(const uint8_t** utf8Ptr) {
+Unichar UTF::NextUTF8(const uint8_t** utf8Ptr)
+{
     const uint8_t* text = *utf8Ptr;
 
     uint32_t c = 0;
@@ -34,12 +38,16 @@
     assert(n >= 1 && n <= 4);
 
     unsigned first = *text++;
-    if (n == 1) {
+    if (n == 1)
+    {
         c = first;
-    } else {
+    }
+    else
+    {
         c = first & ((unsigned)0xFF >> n);
         --n;
-        do {
+        do
+        {
             c = (c << 6) | (*text++ & 0x3F);
         } while (--n);
     }
@@ -47,8 +55,10 @@
     return c;
 }
 
-int UTF::ToUTF16(Unichar uni, uint16_t utf16[]) {
-    if (uni > 0xFFFF) {
+int UTF::ToUTF16(Unichar uni, uint16_t utf16[])
+{
+    if (uni > 0xFFFF)
+    {
         utf16[0] = castTo<uint16_t>((0xD800 - 64) | (uni >> 10));
         utf16[1] = castTo<uint16_t>(0xDC00 | (uni & 0x3FF));
         return 2;
diff --git a/viewer/include/viewer/sample_tools/sample_atlas_packer.hpp b/viewer/include/viewer/sample_tools/sample_atlas_packer.hpp
index c131e3f..8c1a34b 100644
--- a/viewer/include/viewer/sample_tools/sample_atlas_packer.hpp
+++ b/viewer/include/viewer/sample_tools/sample_atlas_packer.hpp
@@ -9,11 +9,13 @@
 #include <vector>
 #include <unordered_map>
 
-namespace rive {
+namespace rive
+{
 class ImageAsset;
 class SokolRenderImageResource;
 /// A single atlas image generated by the packer.
-class SampleAtlas {
+class SampleAtlas
+{
 private:
     uint32_t m_width;
     uint32_t m_height;
@@ -33,7 +35,8 @@
     Span<const uint8_t> pixels() const { return m_pixels; }
 };
 
-struct SampleAtlasLocation {
+struct SampleAtlasLocation
+{
     std::size_t atlasIndex;
     Mat2D transform;
     // Original width & height of the image, so we can make vertex buffers for the "default renderer
@@ -44,7 +47,8 @@
 
 /// An Atlas packer which will create multiple atlas images (SampleAtles) as
 /// necessary.
-class SampleAtlasPacker {
+class SampleAtlasPacker
+{
 private:
     uint32_t m_maxWidth;
     uint32_t m_maxHeight;
@@ -61,7 +65,8 @@
     SampleAtlas* atlas(std::size_t index);
 };
 
-class SampleAtlasResolver : public FileAssetResolver {
+class SampleAtlasResolver : public FileAssetResolver
+{
 private:
     SampleAtlasPacker* m_packer;
     std::unordered_map<uint32_t, rive::rcp<rive::SokolRenderImageResource>> m_sharedImageResources;
diff --git a/viewer/include/viewer/tess/bitmap_decoder.hpp b/viewer/include/viewer/tess/bitmap_decoder.hpp
index 115c6da..0213a71 100644
--- a/viewer/include/viewer/tess/bitmap_decoder.hpp
+++ b/viewer/include/viewer/tess/bitmap_decoder.hpp
@@ -5,9 +5,15 @@
 #include "rive/span.hpp"
 
 /// Bitmap will always take ownership of the bytes it is constructed with.
-class Bitmap {
+class Bitmap
+{
 public:
-    enum class PixelFormat : uint8_t { R, RGB, RGBA };
+    enum class PixelFormat : uint8_t
+    {
+        R,
+        RGB,
+        RGBA
+    };
 
     Bitmap(uint32_t width,
            uint32_t height,
diff --git a/viewer/include/viewer/tess/viewer_sokol_factory.hpp b/viewer/include/viewer/tess/viewer_sokol_factory.hpp
index cc4c811..e48517a 100644
--- a/viewer/include/viewer/tess/viewer_sokol_factory.hpp
+++ b/viewer/include/viewer/tess/viewer_sokol_factory.hpp
@@ -3,7 +3,8 @@
 
 #include "rive/tess/sokol/sokol_factory.hpp"
 
-class ViewerSokolFactory : public rive::SokolFactory {
+class ViewerSokolFactory : public rive::SokolFactory
+{
 public:
     std::unique_ptr<rive::RenderImage> decodeImage(rive::Span<const uint8_t>) override;
 };
diff --git a/viewer/include/viewer/viewer_content.hpp b/viewer/include/viewer/viewer_content.hpp
index 229c670..e607929 100644
--- a/viewer/include/viewer/viewer_content.hpp
+++ b/viewer/include/viewer/viewer_content.hpp
@@ -10,13 +10,15 @@
 
 #include "imgui.h"
 
-namespace rive {
+namespace rive
+{
 class Renderer;
 class Factory;
 class RenderFont;
 } // namespace rive
 
-class ViewerContent {
+class ViewerContent
+{
 public:
     virtual ~ViewerContent();
 
@@ -31,15 +33,18 @@
     using Factory = std::unique_ptr<ViewerContent> (*)(const char filename[]);
 
     // Searches all handlers and returns a content if it is found.
-    static std::unique_ptr<ViewerContent> findHandler(const char filename[]) {
+    static std::unique_ptr<ViewerContent> findHandler(const char filename[])
+    {
         Factory factories[] = {
             Scene,
             Image,
             Text,
             TextPath,
         };
-        for (auto f : factories) {
-            if (auto content = f(filename)) {
+        for (auto f : factories)
+        {
+            if (auto content = f(filename))
+            {
                 return content;
             }
         }
diff --git a/viewer/include/viewer/viewer_host.hpp b/viewer/include/viewer/viewer_host.hpp
index cbf0ddc..bf64439 100644
--- a/viewer/include/viewer/viewer_host.hpp
+++ b/viewer/include/viewer/viewer_host.hpp
@@ -13,7 +13,8 @@
 
 class ViewerContent;
 
-class ViewerHost {
+class ViewerHost
+{
 public:
     virtual ~ViewerHost() {}
 
diff --git a/viewer/src/sample_tools/sample_atlas_packer.cpp b/viewer/src/sample_tools/sample_atlas_packer.cpp
index cc06ffd..b9a6f88 100644
--- a/viewer/src/sample_tools/sample_atlas_packer.cpp
+++ b/viewer/src/sample_tools/sample_atlas_packer.cpp
@@ -9,13 +9,15 @@
 
 using namespace rive;
 
-class AtlasRenderImage : public RenderImage {
+class AtlasRenderImage : public RenderImage
+{
 private:
     std::vector<uint8_t> m_Pixels;
 
 public:
     AtlasRenderImage(const uint8_t* pixels, uint32_t width, uint32_t height) :
-        m_Pixels(pixels, pixels + (width * height * 4)) {
+        m_Pixels(pixels, pixels + (width * height * 4))
+    {
         m_Width = width;
         m_Height = height;
     }
@@ -23,14 +25,18 @@
     Span<const uint8_t> pixels() { return m_Pixels; }
 };
 
-class AtlasPackerFactory : public NoOpFactory {
-    std::unique_ptr<RenderImage> decodeImage(Span<const uint8_t> bytes) override {
+class AtlasPackerFactory : public NoOpFactory
+{
+    std::unique_ptr<RenderImage> decodeImage(Span<const uint8_t> bytes) override
+    {
         auto bitmap = Bitmap::decode(bytes);
-        if (bitmap) {
+        if (bitmap)
+        {
             // We have a bitmap, let's make an image.
 
             // For now only deal with RGBA.
-            if (bitmap->pixelFormat() != Bitmap::PixelFormat::RGBA) {
+            if (bitmap->pixelFormat() != Bitmap::PixelFormat::RGBA)
+            {
                 bitmap->pixelFormat(Bitmap::PixelFormat::RGBA);
             }
 
@@ -43,19 +49,25 @@
 };
 
 SampleAtlasPacker::SampleAtlasPacker(uint32_t maxWidth, uint32_t maxHeight) :
-    m_maxWidth(maxWidth), m_maxHeight(maxHeight) {}
+    m_maxWidth(maxWidth), m_maxHeight(maxHeight)
+{}
 
-void SampleAtlasPacker::pack(Span<const uint8_t> rivBytes) {
+void SampleAtlasPacker::pack(Span<const uint8_t> rivBytes)
+{
     AtlasPackerFactory factory;
-    if (auto file = rive::File::import(rivBytes, &factory)) {
-        for (auto asset : file->assets()) {
-            if (asset->is<ImageAsset>()) {
+    if (auto file = rive::File::import(rivBytes, &factory))
+    {
+        for (auto asset : file->assets())
+        {
+            if (asset->is<ImageAsset>())
+            {
                 Mat2D uvTransform;
 
                 auto imageAsset = asset->as<ImageAsset>();
                 auto renderImage = static_cast<AtlasRenderImage*>(imageAsset->renderImage());
 
-                if (m_atlases.empty()) {
+                if (m_atlases.empty())
+                {
                     // Make the first atlas.
                     m_atlases.push_back(new SampleAtlas(m_maxWidth, m_maxHeight));
                 }
@@ -83,7 +95,9 @@
 
                         // Clean up unused next atlas.
                         delete nextAtlas;
-                    } else {
+                    }
+                    else
+                    {
                         m_atlases.push_back(nextAtlas);
                     }
                 }
@@ -101,40 +115,51 @@
     }
 }
 
-SampleAtlasPacker::~SampleAtlasPacker() {
-    for (auto atlas : m_atlases) {
+SampleAtlasPacker::~SampleAtlasPacker()
+{
+    for (auto atlas : m_atlases)
+    {
         delete atlas;
     }
 }
 
-SampleAtlas* SampleAtlasPacker::atlas(std::size_t index) {
+SampleAtlas* SampleAtlasPacker::atlas(std::size_t index)
+{
     assert(index < m_atlases.size());
     return m_atlases[index];
 }
 
 SampleAtlas::SampleAtlas(const uint8_t* pixels, uint32_t width, uint32_t height) :
-    m_width(width), m_height(height), m_pixels(pixels, pixels + width * height * 4) {}
+    m_width(width), m_height(height), m_pixels(pixels, pixels + width * height * 4)
+{}
 
 SampleAtlas::SampleAtlas(uint32_t width, uint32_t height) :
-    m_width(width), m_height(height), m_pixels(width * height * 4) {}
+    m_width(width), m_height(height), m_pixels(width * height * 4)
+{}
 
 bool SampleAtlas::pack(const uint8_t* sourcePixels,
                        uint32_t width,
                        uint32_t height,
-                       Mat2D& packTransform) {
-    if (m_x + width >= m_width) {
+                       Mat2D& packTransform)
+{
+    if (m_x + width >= m_width)
+    {
         m_x = 0;
         m_y = m_nextY;
     }
     // Check if we overflow vertically, we're done.
-    if (m_y + height >= m_height) {
+    if (m_y + height >= m_height)
+    {
         return false;
     }
 
     // We fit, pack into m_x, m_y.
-    for (uint32_t sy = 0; sy < height; sy++) {
-        for (uint32_t sx = 0; sx < width; sx++) {
-            for (uint8_t channel = 0; channel < 4; channel++) {
+    for (uint32_t sy = 0; sy < height; sy++)
+    {
+        for (uint32_t sx = 0; sx < width; sx++)
+        {
+            for (uint8_t channel = 0; channel < 4; channel++)
+            {
                 m_pixels[((m_y + sy) * m_width + (m_x + sx)) * 4 + channel] =
                     sourcePixels[(sy * width + sx) * 4 + channel];
             }
@@ -153,17 +178,20 @@
 
     // Increment internal positions.
     m_x += width;
-    if (m_y + height > m_nextY) {
+    if (m_y + height > m_nextY)
+    {
         m_nextY = m_y + height;
     }
 
     return true;
 }
 
-bool SampleAtlasPacker::find(const ImageAsset& asset, SampleAtlasLocation* location) {
+bool SampleAtlasPacker::find(const ImageAsset& asset, SampleAtlasLocation* location)
+{
     auto assetId = asset.assetId();
     auto result = m_lookup.find(assetId);
-    if (result != m_lookup.end()) {
+    if (result != m_lookup.end())
+    {
         *location = result->second;
         return true;
     }
@@ -172,20 +200,26 @@
 
 SampleAtlasResolver::SampleAtlasResolver(SampleAtlasPacker* packer) : m_packer(packer) {}
 
-void SampleAtlasResolver::loadContents(FileAsset& asset) {
-    if (asset.is<ImageAsset>()) {
+void SampleAtlasResolver::loadContents(FileAsset& asset)
+{
+    if (asset.is<ImageAsset>())
+    {
         SampleAtlasLocation location;
         auto imageAsset = asset.as<ImageAsset>();
 
         // Find which location this image got packed into.
-        if (m_packer->find(*imageAsset, &location)) {
+        if (m_packer->find(*imageAsset, &location))
+        {
             // Determine if we've already loaded the a render image.
             auto sharedItr = m_sharedImageResources.find(location.atlasIndex);
 
             rive::rcp<rive::SokolRenderImageResource> imageResource;
-            if (sharedItr != m_sharedImageResources.end()) {
+            if (sharedItr != m_sharedImageResources.end())
+            {
                 imageResource = sharedItr->second;
-            } else {
+            }
+            else
+            {
                 auto atlas = m_packer->atlas(location.atlasIndex);
                 imageResource = rive::rcp<rive::SokolRenderImageResource>(
                     new SokolRenderImageResource(atlas->pixels().data(),
diff --git a/viewer/src/skia/skia_host.cpp b/viewer/src/skia/skia_host.cpp
index e88e82e..2c44b6b 100644
--- a/viewer/src/skia/skia_host.cpp
+++ b/viewer/src/skia/skia_host.cpp
@@ -35,7 +35,8 @@
 #include "cg_factory.hpp"
 #include "cg_renderer.hpp"
 #include "mac_utils.hpp"
-static void render_with_cg(SkCanvas* canvas, int w, int h, ViewerContent* content, double elapsed) {
+static void render_with_cg(SkCanvas* canvas, int w, int h, ViewerContent* content, double elapsed)
+{
     // cons up a CGContext
     auto pixels = SkData::MakeUninitialized(w * h * 4);
     auto bytes = (uint8_t*)pixels->writable_data();
@@ -55,12 +56,14 @@
 }
 #endif
 
-class SkiaViewerHost : public ViewerHost {
+class SkiaViewerHost : public ViewerHost
+{
 public:
     sk_sp<GrDirectContext> m_context;
     SkISize m_dimensions;
 
-    bool init(sg_pass_action* action, int width, int height) override {
+    bool init(sg_pass_action* action, int width, int height) override
+    {
         m_dimensions = {width, height};
 
 #if defined(SK_METAL)
@@ -86,7 +89,8 @@
 
     void handleResize(int width, int height) override { m_dimensions = {width, height}; }
 
-    void beforeDefaultPass(ViewerContent* content, double elapsed) override {
+    void beforeDefaultPass(ViewerContent* content, double elapsed) override
+    {
         m_context->resetContext();
         auto surf = makeSkiaSurface(m_context.get(), m_dimensions.width(), m_dimensions.height());
         SkCanvas* canvas = surf->getCanvas();
@@ -94,7 +98,8 @@
         paint.setColor(0xFF161616);
         canvas->drawPaint(paint);
 
-        if (content) {
+        if (content)
+        {
 #ifdef TEST_CG_RENDERER
             render_with_cg(canvas, m_dimensions.width(), m_dimensions.height(), content, elapsed);
 #elif defined(SW_SKIA_MODE)
@@ -118,7 +123,8 @@
 
 std::unique_ptr<ViewerHost> ViewerHost::Make() { return std::make_unique<SkiaViewerHost>(); }
 
-rive::Factory* ViewerHost::Factory() {
+rive::Factory* ViewerHost::Factory()
+{
 #ifdef TEST_CG_RENDERER
     static rive::CGFactory gFactory;
     return &gFactory;
diff --git a/viewer/src/skia/viewer_skia_gl.cpp b/viewer/src/skia/viewer_skia_gl.cpp
index 3258fc9..b42a5ed 100644
--- a/viewer/src/skia/viewer_skia_gl.cpp
+++ b/viewer/src/skia/viewer_skia_gl.cpp
@@ -7,7 +7,8 @@
 
 sk_sp<GrDirectContext> makeSkiaContext() { return GrDirectContext::MakeGL(); }
 
-sk_sp<SkSurface> makeSkiaSurface(GrDirectContext* context, int width, int height) {
+sk_sp<SkSurface> makeSkiaSurface(GrDirectContext* context, int width, int height)
+{
     GrGLFramebufferInfo framebufferInfo;
     framebufferInfo.fFBOID = 0;
     framebufferInfo.fFormat = 0x8058; // GL_RGBA8;
diff --git a/viewer/src/stats.cpp b/viewer/src/stats.cpp
index 4faf138..679f19f 100644
--- a/viewer/src/stats.cpp
+++ b/viewer/src/stats.cpp
@@ -1,14 +1,16 @@
 #include "sokol_app.h"
 #include "imgui.h"
 
-void displayStats() {
+void displayStats()
+{
     bool isOpen = true;
     ImGuiStyle& style = ImGui::GetStyle();
     style.WindowBorderSize = 0.0f;
     ImGui::Begin("stats",
                  &isOpen,
                  ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove);
-    if (ImGui::BeginTable("table2", 2)) {
+    if (ImGui::BeginTable("table2", 2))
+    {
 
         ImGui::TableNextRow();
         ImGui::TableNextColumn();
diff --git a/viewer/src/tess/bitmap_decoder.cpp b/viewer/src/tess/bitmap_decoder.cpp
index 0168883..112f9d1 100644
--- a/viewer/src/tess/bitmap_decoder.cpp
+++ b/viewer/src/tess/bitmap_decoder.cpp
@@ -6,20 +6,28 @@
                uint32_t height,
                PixelFormat pixelFormat,
                std::unique_ptr<const uint8_t[]> bytes) :
-    m_Width(width), m_Height(height), m_PixelFormat(pixelFormat), m_Bytes(std::move(bytes)) {}
+    m_Width(width), m_Height(height), m_PixelFormat(pixelFormat), m_Bytes(std::move(bytes))
+{}
 
 Bitmap::Bitmap(uint32_t width, uint32_t height, PixelFormat pixelFormat, const uint8_t* bytes) :
-    Bitmap(width, height, pixelFormat, std::unique_ptr<const uint8_t[]>(bytes)) {}
+    Bitmap(width, height, pixelFormat, std::unique_ptr<const uint8_t[]>(bytes))
+{}
 
-size_t Bitmap::bytesPerPixel(PixelFormat format) const {
-    switch (format) {
-        case PixelFormat::R: return 1;
-        case PixelFormat::RGB: return 3;
-        case PixelFormat::RGBA: return 4;
+size_t Bitmap::bytesPerPixel(PixelFormat format) const
+{
+    switch (format)
+    {
+        case PixelFormat::R:
+            return 1;
+        case PixelFormat::RGB:
+            return 3;
+        case PixelFormat::RGBA:
+            return 4;
     }
 }
 
-size_t Bitmap::byteSize(PixelFormat format) const {
+size_t Bitmap::byteSize(PixelFormat format) const
+{
     return m_Width * m_Height * bytesPerPixel(format);
 }
 
@@ -30,13 +38,15 @@
 std::unique_ptr<Bitmap> DecodeWebP(rive::Span<const uint8_t> bytes) { return nullptr; }
 
 using BitmapDecoder = std::unique_ptr<Bitmap> (*)(rive::Span<const uint8_t> bytes);
-struct ImageFormat {
+struct ImageFormat
+{
     const char* name;
     std::vector<const uint8_t> fingerprint;
     BitmapDecoder decodeImage;
 };
 
-std::unique_ptr<Bitmap> Bitmap::decode(rive::Span<const uint8_t> bytes) {
+std::unique_ptr<Bitmap> Bitmap::decode(rive::Span<const uint8_t> bytes)
+{
     static ImageFormat decoders[] = {
         {
             "png",
@@ -55,23 +65,27 @@
         },
     };
 
-    for (auto recognizer : decoders) {
+    for (auto recognizer : decoders)
+    {
         auto& fingerprint = recognizer.fingerprint;
 
         // Immediately discard decoders with fingerprints that are longer than
         // the file buffer.
-        if (recognizer.fingerprint.size() > bytes.size()) {
+        if (recognizer.fingerprint.size() > bytes.size())
+        {
             continue;
         }
 
         // If the fingerprint doesn't match, discrd this decoder. These are all bytes so .size() is
         // fine here.
-        if (std::memcmp(fingerprint.data(), bytes.data(), fingerprint.size()) != 0) {
+        if (std::memcmp(fingerprint.data(), bytes.data(), fingerprint.size()) != 0)
+        {
             continue;
         }
 
         auto bitmap = recognizer.decodeImage(bytes);
-        if (!bitmap) {
+        if (!bitmap)
+        {
             fprintf(stderr, "Bitmap::decode - failed to decode a %s.\n", recognizer.name);
         }
         return bitmap;
@@ -79,8 +93,10 @@
     return nullptr;
 }
 
-void Bitmap::pixelFormat(PixelFormat format) {
-    if (format == m_PixelFormat) {
+void Bitmap::pixelFormat(PixelFormat format)
+{
+    if (format == m_PixelFormat)
+    {
         return;
     }
     auto nextByteSize = byteSize(format);
@@ -90,8 +106,10 @@
     auto toBytesPerPixel = bytesPerPixel(format);
     int writeIndex = 0;
     int readIndex = 0;
-    for (int i = 0; i < m_Width * m_Height; i++) {
-        for (int j = 0; j < toBytesPerPixel; j++) {
+    for (int i = 0; i < m_Width * m_Height; i++)
+    {
+        for (int j = 0; j < toBytesPerPixel; j++)
+        {
             nextBytes[writeIndex++] = j < fromBytesPerPixel ? m_Bytes[readIndex++] : 255;
         }
     }
diff --git a/viewer/src/tess/decode_png.cpp b/viewer/src/tess/decode_png.cpp
index 65b4ae9..1a7a6b0 100644
--- a/viewer/src/tess/decode_png.cpp
+++ b/viewer/src/tess/decode_png.cpp
@@ -2,17 +2,18 @@
 #include "viewer/tess/bitmap_decoder.hpp"
 #include "png.h"
 
-struct EncodedImageBuffer {
+struct EncodedImageBuffer
+{
     const uint8_t* bytes;
     size_t position;
     size_t size;
 };
 
-static void ReadDataFromMemory(png_structp png_ptr,
-                               png_bytep outBytes,
-                               png_size_t byteCountToRead) {
+static void ReadDataFromMemory(png_structp png_ptr, png_bytep outBytes, png_size_t byteCountToRead)
+{
     png_voidp a = png_get_io_ptr(png_ptr);
-    if (a == nullptr) {
+    if (a == nullptr)
+    {
         return;
     }
     EncodedImageBuffer& stream = *(EncodedImageBuffer*)a;
@@ -21,12 +22,14 @@
     memcpy(outBytes, stream.bytes + stream.position, bytesRead);
     stream.position += bytesRead;
 
-    if ((png_size_t)bytesRead != byteCountToRead) {
+    if ((png_size_t)bytesRead != byteCountToRead)
+    {
         // Report image error?
     }
 }
 
-std::unique_ptr<Bitmap> DecodePng(rive::Span<const uint8_t> bytes) {
+std::unique_ptr<Bitmap> DecodePng(rive::Span<const uint8_t> bytes)
+{
     png_structp png_ptr;
     png_infop info_ptr;
     png_uint_32 width, height;
@@ -34,13 +37,15 @@
 
     png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
 
-    if (png_ptr == nullptr) {
+    if (png_ptr == nullptr)
+    {
         printf("DecodePng - libpng failed (png_create_read_struct).");
         return nullptr;
     }
 
     info_ptr = png_create_info_struct(png_ptr);
-    if (info_ptr == NULL) {
+    if (info_ptr == NULL)
+    {
         png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
         printf("DecodePng - libpng failed (png_create_info_struct).");
         return nullptr;
@@ -69,21 +74,29 @@
     png_set_strip_16(png_ptr);
 
     int bitDepth = 0;
-    if (color_type == PNG_COLOR_TYPE_PALETTE || color_type == PNG_COLOR_TYPE_RGB) {
+    if (color_type == PNG_COLOR_TYPE_PALETTE || color_type == PNG_COLOR_TYPE_RGB)
+    {
         png_set_expand(png_ptr);
         bitDepth = 24;
-        if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {
+        if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
+        {
             png_set_expand(png_ptr);
             bitDepth += 8;
         }
-    } else if (color_type == PNG_COLOR_TYPE_GRAY) {
+    }
+    else if (color_type == PNG_COLOR_TYPE_GRAY)
+    {
         png_set_expand(png_ptr);
         bitDepth = 8;
-    } else if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
+    }
+    else if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+    {
         png_set_expand(png_ptr);
         png_set_gray_to_rgb(png_ptr);
         bitDepth = 32;
-    } else if (color_type == PNG_COLOR_TYPE_RGB_ALPHA) {
+    }
+    else if (color_type == PNG_COLOR_TYPE_RGB_ALPHA)
+    {
         png_set_expand(png_ptr);
         bitDepth = 32;
     }
@@ -93,7 +106,8 @@
 
     png_bytep* row_pointers = new png_bytep[height];
 
-    for (unsigned row = 0; row < height; row++) {
+    for (unsigned row = 0; row < height; row++)
+    {
         unsigned int rIndex = row;
         // if (flipY) {
         //     rIndex = height - row - 1;
@@ -109,10 +123,17 @@
 
     Bitmap::PixelFormat pixelFormat;
     assert(bitDepth == 32 || bitDepth == 24 || bitDepth == 8);
-    switch (bitDepth) {
-        case 32: pixelFormat = Bitmap::PixelFormat::RGBA; break;
-        case 24: pixelFormat = Bitmap::PixelFormat::RGB; break;
-        case 8: pixelFormat = Bitmap::PixelFormat::R; break;
+    switch (bitDepth)
+    {
+        case 32:
+            pixelFormat = Bitmap::PixelFormat::RGBA;
+            break;
+        case 24:
+            pixelFormat = Bitmap::PixelFormat::RGB;
+            break;
+        case 8:
+            pixelFormat = Bitmap::PixelFormat::R;
+            break;
     }
     return std::make_unique<Bitmap>(width, height, pixelFormat, pixelBuffer);
 }
diff --git a/viewer/src/tess/tess_host.cpp b/viewer/src/tess/tess_host.cpp
index 6767514..b25a345 100644
--- a/viewer/src/tess/tess_host.cpp
+++ b/viewer/src/tess/tess_host.cpp
@@ -10,23 +10,28 @@
 #include "rive/tess/sokol/sokol_tess_renderer.hpp"
 #include "viewer/tess/viewer_sokol_factory.hpp"
 
-class TessViewerHost : public ViewerHost {
+class TessViewerHost : public ViewerHost
+{
 public:
     std::unique_ptr<rive::SokolTessRenderer> m_renderer;
 
-    bool init(sg_pass_action*, int width, int height) override {
+    bool init(sg_pass_action*, int width, int height) override
+    {
         m_renderer = std::make_unique<rive::SokolTessRenderer>();
         m_renderer->orthographicProjection(0.0f, width, height, 0.0f, 0.0f, 1.0f);
         return true;
     }
 
-    void handleResize(int width, int height) override {
+    void handleResize(int width, int height) override
+    {
         m_renderer->orthographicProjection(0.0f, width, height, 0.0f, 0.0f, 1.0f);
     }
 
-    void afterDefaultPass(ViewerContent* content, double elapsed) override {
+    void afterDefaultPass(ViewerContent* content, double elapsed) override
+    {
         m_renderer->reset();
-        if (content) {
+        if (content)
+        {
             content->handleDraw(m_renderer.get(), elapsed);
         }
     }
@@ -34,7 +39,8 @@
 
 std::unique_ptr<ViewerHost> ViewerHost::Make() { return std::make_unique<TessViewerHost>(); }
 
-rive::Factory* ViewerHost::Factory() {
+rive::Factory* ViewerHost::Factory()
+{
     static ViewerSokolFactory sokolFactory;
     return &sokolFactory;
 }
diff --git a/viewer/src/tess/viewer_sokol_factory.cpp b/viewer/src/tess/viewer_sokol_factory.cpp
index f36b4aa..bc0b6fb 100644
--- a/viewer/src/tess/viewer_sokol_factory.cpp
+++ b/viewer/src/tess/viewer_sokol_factory.cpp
@@ -4,14 +4,16 @@
 #include "rive/tess/sokol/sokol_tess_renderer.hpp"
 #include "sokol_gfx.h"
 
-std::unique_ptr<rive::RenderImage>
-ViewerSokolFactory::decodeImage(rive::Span<const uint8_t> bytes) {
+std::unique_ptr<rive::RenderImage> ViewerSokolFactory::decodeImage(rive::Span<const uint8_t> bytes)
+{
     auto bitmap = Bitmap::decode(bytes);
-    if (bitmap) {
+    if (bitmap)
+    {
         // We have a bitmap, let's make an image.
 
         // For now our SokolRenderImage only works with RGBA.
-        if (bitmap->pixelFormat() != Bitmap::PixelFormat::RGBA) {
+        if (bitmap->pixelFormat() != Bitmap::PixelFormat::RGBA)
+        {
             bitmap->pixelFormat(Bitmap::PixelFormat::RGBA);
         }
 
diff --git a/viewer/src/viewer.cpp b/viewer/src/viewer.cpp
index 5fc7bf1..fd62f51 100644
--- a/viewer/src/viewer.cpp
+++ b/viewer/src/viewer.cpp
@@ -17,13 +17,17 @@
 
 std::unique_ptr<ViewerHost> g_Host = ViewerHost::Make();
 std::unique_ptr<ViewerContent> g_Content = ViewerContent::TrimPath("");
-static struct { sg_pass_action pass_action; } state;
+static struct
+{
+    sg_pass_action pass_action;
+} state;
 
 void displayStats();
 
 static const int backgroundColor = rive::colorARGB(255, 22, 22, 22);
 
-static void init(void) {
+static void init(void)
+{
     sg_desc descriptor = {
         .context = sapp_sgcontext(),
         .buffer_pool_size = 1024,
@@ -55,13 +59,15 @@
             },
     };
 
-    if (!g_Host->init(&state.pass_action, sapp_width(), sapp_height())) {
+    if (!g_Host->init(&state.pass_action, sapp_width(), sapp_height()))
+    {
         fprintf(stderr, "failed to initialize host\n");
         sapp_quit();
     }
 }
 
-static void frame(void) {
+static void frame(void)
+{
     auto dur = sapp_frame_duration();
 
     g_Host->beforeDefaultPass(g_Content.get(), dur);
@@ -80,7 +86,8 @@
 
     displayStats();
 
-    if (g_Content) {
+    if (g_Content)
+    {
         g_Content->handleImgui();
     }
     simgui_render();
@@ -89,7 +96,8 @@
     sg_commit();
 }
 
-static void cleanup(void) {
+static void cleanup(void)
+{
     g_Content = nullptr;
     g_Host = nullptr;
 
@@ -97,29 +105,37 @@
     sg_shutdown();
 }
 
-static void event(const sapp_event* ev) {
+static void event(const sapp_event* ev)
+{
     simgui_handle_event(ev);
 
-    switch (ev->type) {
+    switch (ev->type)
+    {
         case SAPP_EVENTTYPE_RESIZED:
-            if (g_Content) {
+            if (g_Content)
+            {
                 g_Content->handleResize(ev->framebuffer_width, ev->framebuffer_height);
             }
             g_Host->handleResize(ev->framebuffer_width, ev->framebuffer_height);
             break;
-        case SAPP_EVENTTYPE_FILES_DROPPED: {
+        case SAPP_EVENTTYPE_FILES_DROPPED:
+        {
             // Do this to make sure the graphics is bound.
             bindGraphicsContext();
 
             // get the number of files and their paths like this:
             const int numDroppedFiles = sapp_get_num_dropped_files();
-            if (numDroppedFiles != 0) {
+            if (numDroppedFiles != 0)
+            {
                 const char* filename = sapp_get_dropped_file_path(numDroppedFiles - 1);
                 auto newContent = ViewerContent::findHandler(filename);
-                if (newContent) {
+                if (newContent)
+                {
                     g_Content = std::move(newContent);
                     g_Content->handleResize(ev->framebuffer_width, ev->framebuffer_height);
-                } else {
+                }
+                else
+                {
                     fprintf(stderr, "No handler found for %s\n", filename);
                 }
             }
@@ -127,39 +143,53 @@
         }
         case SAPP_EVENTTYPE_MOUSE_DOWN:
         case SAPP_EVENTTYPE_TOUCHES_BEGAN:
-            if (g_Content) {
+            if (g_Content)
+            {
                 g_Content->handlePointerDown(ev->mouse_x, ev->mouse_y);
             }
             break;
         case SAPP_EVENTTYPE_MOUSE_UP:
         case SAPP_EVENTTYPE_TOUCHES_ENDED:
-            if (g_Content) {
+            if (g_Content)
+            {
                 g_Content->handlePointerUp(ev->mouse_x, ev->mouse_y);
                 break;
             }
         case SAPP_EVENTTYPE_MOUSE_MOVE:
         case SAPP_EVENTTYPE_TOUCHES_MOVED:
-            if (g_Content) {
+            if (g_Content)
+            {
                 g_Content->handlePointerMove(ev->mouse_x, ev->mouse_y);
             }
             break;
         case SAPP_EVENTTYPE_KEY_UP:
-            switch (ev->key_code) {
-                case SAPP_KEYCODE_ESCAPE: sapp_quit(); break;
-                case SAPP_KEYCODE_T: g_Content = ViewerContent::Text(".svg"); break;
-                case SAPP_KEYCODE_P: g_Content = ViewerContent::TextPath(""); break;
-                default: break;
+            switch (ev->key_code)
+            {
+                case SAPP_KEYCODE_ESCAPE:
+                    sapp_quit();
+                    break;
+                case SAPP_KEYCODE_T:
+                    g_Content = ViewerContent::Text(".svg");
+                    break;
+                case SAPP_KEYCODE_P:
+                    g_Content = ViewerContent::TextPath("");
+                    break;
+                default:
+                    break;
             }
             break;
-        default: break;
+        default:
+            break;
     }
 }
 
-sapp_desc sokol_main(int argc, char* argv[]) {
+sapp_desc sokol_main(int argc, char* argv[])
+{
     (void)argc;
     (void)argv;
 
-    return (sapp_desc) {
+    return (sapp_desc)
+    {
         .init_cb = init, .frame_cb = frame, .cleanup_cb = cleanup, .event_cb = event,
         .enable_dragndrop = true, .high_dpi = true,
         .window_title = "Rive Viewer "
diff --git a/viewer/src/viewer_content/image_content.cpp b/viewer/src/viewer_content/image_content.cpp
index e9a18f7..055c038 100644
--- a/viewer/src/viewer_content/image_content.cpp
+++ b/viewer/src/viewer_content/image_content.cpp
@@ -6,13 +6,15 @@
 #include "rive/factory.hpp"
 #include "rive/renderer.hpp"
 
-class ImageContent : public ViewerContent {
+class ImageContent : public ViewerContent
+{
     std::unique_ptr<rive::RenderImage> m_image;
 
 public:
     ImageContent(std::unique_ptr<rive::RenderImage> image) : m_image(std::move(image)) {}
 
-    void handleDraw(rive::Renderer* renderer, double) override {
+    void handleDraw(rive::Renderer* renderer, double) override
+    {
         renderer->drawImage(m_image.get(), rive::BlendMode::srcOver, 1);
     }
 
@@ -20,10 +22,12 @@
     void handleImgui() override {}
 };
 
-std::unique_ptr<ViewerContent> ViewerContent::Image(const char filename[]) {
+std::unique_ptr<ViewerContent> ViewerContent::Image(const char filename[])
+{
     auto bytes = LoadFile(filename);
     auto image = RiveFactory()->decodeImage(bytes);
-    if (image) {
+    if (image)
+    {
         return std::make_unique<ImageContent>(std::move(image));
     }
     return nullptr;
diff --git a/viewer/src/viewer_content/scene_content.cpp b/viewer/src/viewer_content/scene_content.cpp
index 6eab70d..6bd1129 100644
--- a/viewer/src/viewer_content/scene_content.cpp
+++ b/viewer/src/viewer_content/scene_content.cpp
@@ -20,7 +20,8 @@
 
 constexpr int REQUEST_DEFAULT_SCENE = -1;
 
-class SceneContent : public ViewerContent {
+class SceneContent : public ViewerContent
+{
     // ImGui wants raw pointers to names, but our public API returns
     // names as strings (by value), so we cache these names each time we
     // load a file
@@ -28,26 +29,33 @@
     std::vector<std::string> animationNames;
     std::vector<std::string> stateMachineNames;
 
-    void loadArtboardNames() {
-        if (m_File) {
+    void loadArtboardNames()
+    {
+        if (m_File)
+        {
             artboardNames.clear();
             auto abCnt = m_File->artboardCount();
 
-            for (int i = 0; i < abCnt; i++) {
+            for (int i = 0; i < abCnt; i++)
+            {
                 auto abName = m_File->artboardNameAt(i);
                 artboardNames.push_back(abName);
             }
         }
     }
 
-    void loadNames(const rive::Artboard* ab) {
+    void loadNames(const rive::Artboard* ab)
+    {
         animationNames.clear();
         stateMachineNames.clear();
-        if (ab) {
-            for (size_t i = 0; i < ab->animationCount(); ++i) {
+        if (ab)
+        {
+            for (size_t i = 0; i < ab->animationCount(); ++i)
+            {
                 animationNames.push_back(ab->animationNameAt(i));
             }
-            for (size_t i = 0; i < ab->stateMachineCount(); ++i) {
+            for (size_t i = 0; i < ab->stateMachineCount(); ++i)
+            {
                 stateMachineNames.push_back(ab->stateMachineNameAt(i));
             }
         }
@@ -65,7 +73,8 @@
     int m_width = 0, m_height = 0;
     rive::Mat2D m_InverseViewTransform;
 
-    void initArtboard(int index) {
+    void initArtboard(int index)
+    {
         if (!m_File)
             return;
         loadArtboardNames();
@@ -80,45 +89,53 @@
         initStateMachine(REQUEST_DEFAULT_SCENE);
     }
 
-    void initStateMachine(int index) {
+    void initStateMachine(int index)
+    {
         m_StateMachineIndex = -1;
         m_AnimationIndex = -1;
         m_CurrentScene = nullptr;
 
         m_ArtboardInstance->advance(0.0f);
 
-        if (index < 0) {
+        if (index < 0)
+        {
             m_CurrentScene = m_ArtboardInstance->defaultStateMachine();
             index = m_ArtboardInstance->defaultStateMachineIndex();
         }
-        if (!m_CurrentScene) {
-            if (index >= m_ArtboardInstance->stateMachineCount()) {
+        if (!m_CurrentScene)
+        {
+            if (index >= m_ArtboardInstance->stateMachineCount())
+            {
                 index = 0;
             }
             m_CurrentScene = m_ArtboardInstance->stateMachineAt(index);
         }
-        if (!m_CurrentScene) {
+        if (!m_CurrentScene)
+        {
             index = -1;
             m_CurrentScene = m_ArtboardInstance->animationAt(0);
             m_AnimationIndex = 0;
         }
         m_StateMachineIndex = index;
 
-        if (m_CurrentScene) {
+        if (m_CurrentScene)
+        {
             m_CurrentScene->inputCount();
         }
 
         DumpCounters("After loading file");
     }
 
-    void initAnimation(int index) {
+    void initAnimation(int index)
+    {
         m_StateMachineIndex = -1;
         m_AnimationIndex = -1;
         m_CurrentScene = nullptr;
 
         m_ArtboardInstance->advance(0.0f);
 
-        if (index >= 0 && index < m_ArtboardInstance->animationCount()) {
+        if (index >= 0 && index < m_ArtboardInstance->animationCount())
+        {
             m_AnimationIndex = index;
             m_CurrentScene = m_ArtboardInstance->animationAt(index);
             m_CurrentScene->inputCount();
@@ -129,37 +146,46 @@
 
 public:
     SceneContent(const char filename[], std::unique_ptr<rive::File> file) :
-        m_Filename(filename), m_File(std::move(file)) {
+        m_Filename(filename), m_File(std::move(file))
+    {
         initArtboard(REQUEST_DEFAULT_SCENE);
     }
 
-    void handlePointerMove(float x, float y) override {
+    void handlePointerMove(float x, float y) override
+    {
         auto pointer = m_InverseViewTransform * rive::Vec2D(x, y);
-        if (m_CurrentScene) {
+        if (m_CurrentScene)
+        {
             m_CurrentScene->pointerMove(pointer);
         }
     }
 
-    void handlePointerDown(float x, float y) override {
+    void handlePointerDown(float x, float y) override
+    {
         auto pointer = m_InverseViewTransform * rive::Vec2D(x, y);
-        if (m_CurrentScene) {
+        if (m_CurrentScene)
+        {
             m_CurrentScene->pointerDown(pointer);
         }
     }
 
-    void handlePointerUp(float x, float y) override {
+    void handlePointerUp(float x, float y) override
+    {
         auto pointer = m_InverseViewTransform * rive::Vec2D(x, y);
-        if (m_CurrentScene) {
+        if (m_CurrentScene)
+        {
             m_CurrentScene->pointerUp(pointer);
         }
     }
 
-    void handleResize(int width, int height) override {
+    void handleResize(int width, int height) override
+    {
         m_width = width;
         m_height = height;
     }
 
-    void handleDraw(rive::Renderer* renderer, double elapsed) override {
+    void handleDraw(rive::Renderer* renderer, double elapsed) override
+    {
         renderer->save();
 
         auto viewTransform = rive::computeAlignment(rive::Fit::contain,
@@ -170,23 +196,30 @@
         // Store the inverse view so we can later go from screen to world.
         m_InverseViewTransform = viewTransform.invertOrIdentity();
 
-        if (m_CurrentScene) {
+        if (m_CurrentScene)
+        {
             m_CurrentScene->advanceAndApply(elapsed);
             m_CurrentScene->draw(renderer);
-        } else {
+        }
+        else
+        {
             m_ArtboardInstance->draw(renderer); // we're just a still-frame file/artboard
         }
 
         renderer->restore();
     }
 
-    void handleImgui() override {
+    void handleImgui() override
+    {
         // For now the atlas packer only works with tess as it compiles in our
         // Bitmap decoder.
 #ifdef RIVE_RENDERER_TESS
-        if (ImGui::BeginMainMenuBar()) {
-            if (ImGui::BeginMenu("Tools")) {
-                if (ImGui::MenuItem("Build Atlas")) {
+        if (ImGui::BeginMainMenuBar())
+        {
+            if (ImGui::BeginMenu("Tools"))
+            {
+                if (ImGui::MenuItem("Build Atlas"))
+                {
                     // Create an atlas packer.
                     rive::SampleAtlasPacker atlasPacker(2048, 2048);
 
@@ -211,7 +244,8 @@
                     auto strippedBytes = rive::File::stripAssets(rivFileBytes,
                                                                  {rive::ImageAsset::typeKey},
                                                                  &stripResult);
-                    if (stripResult != rive::ImportResult::success) {
+                    if (stripResult != rive::ImportResult::success)
+                    {
                         printf("Failed to strip images\n");
                         return;
                     }
@@ -225,7 +259,8 @@
                     if (auto file = rive::File::import(strippedBytes,
                                                        RiveFactory(),
                                                        &loadAtlasedResult,
-                                                       &resolver)) {
+                                                       &resolver))
+                    {
                         m_File = std::move(file);
                         initArtboard(REQUEST_DEFAULT_SCENE);
                     }
@@ -235,7 +270,8 @@
             ImGui::EndMainMenuBar();
         }
 #endif
-        if (m_ArtboardInstance != nullptr) {
+        if (m_ArtboardInstance != nullptr)
+        {
             ImGui::Begin(m_Filename.c_str(), nullptr);
             if (ImGui::ListBox(
                     "Artboard",
@@ -281,15 +317,18 @@
                 m_AnimationIndex = -1;
                 initStateMachine(m_StateMachineIndex);
             }
-            if (m_CurrentScene != nullptr) {
+            if (m_CurrentScene != nullptr)
+            {
 
                 ImGui::Columns(2);
                 ImGui::SetColumnWidth(0, ImGui::GetWindowWidth() * 0.6666);
 
-                for (int i = 0; i < m_CurrentScene->inputCount(); i++) {
+                for (int i = 0; i < m_CurrentScene->inputCount(); i++)
+                {
                     auto inputInstance = m_CurrentScene->input(i);
 
-                    if (inputInstance->input()->is<rive::StateMachineNumber>()) {
+                    if (inputInstance->input()->is<rive::StateMachineNumber>())
+                    {
                         // ImGui requires names as id's, use ## to hide the
                         // label but still give it an id.
                         char label[256];
@@ -300,17 +339,22 @@
                         ImGui::InputFloat(label, &v, 1.0f, 2.0f, "%.3f");
                         number->value(v);
                         ImGui::NextColumn();
-                    } else if (inputInstance->input()->is<rive::StateMachineTrigger>()) {
+                    }
+                    else if (inputInstance->input()->is<rive::StateMachineTrigger>())
+                    {
                         // ImGui requires names as id's, use ## to hide the
                         // label but still give it an id.
                         char label[256];
                         snprintf(label, 256, "Fire##%u", i);
-                        if (ImGui::Button(label)) {
+                        if (ImGui::Button(label))
+                        {
                             auto trigger = static_cast<rive::SMITrigger*>(inputInstance);
                             trigger->fire();
                         }
                         ImGui::NextColumn();
-                    } else if (inputInstance->input()->is<rive::StateMachineBool>()) {
+                    }
+                    else if (inputInstance->input()->is<rive::StateMachineBool>())
+                    {
                         // ImGui requires names as id's, use ## to hide the
                         // label but still give it an id.
                         char label[256];
@@ -329,16 +373,19 @@
                 ImGui::Columns(1);
             }
             ImGui::End();
-
-        } else {
+        }
+        else
+        {
             ImGui::Text("Drop a .riv file to preview.");
         }
     }
 };
 
-std::unique_ptr<ViewerContent> ViewerContent::Scene(const char filename[]) {
+std::unique_ptr<ViewerContent> ViewerContent::Scene(const char filename[])
+{
     auto bytes = LoadFile(filename);
-    if (auto file = rive::File::import(bytes, RiveFactory())) {
+    if (auto file = rive::File::import(bytes, RiveFactory()))
+    {
         return std::make_unique<SceneContent>(filename, std::move(file));
     }
     return nullptr;
diff --git a/viewer/src/viewer_content/text_content.cpp b/viewer/src/viewer_content/text_content.cpp
index 1897700..44e70f4 100644
--- a/viewer/src/viewer_content/text_content.cpp
+++ b/viewer/src/viewer_content/text_content.cpp
@@ -17,18 +17,22 @@
 
 static bool ws(rive::Unichar c) { return c <= ' '; }
 
-std::vector<int> compute_word_breaks(rive::Span<rive::Unichar> chars) {
+std::vector<int> compute_word_breaks(rive::Span<rive::Unichar> chars)
+{
     std::vector<int> breaks;
 
     const unsigned len = chars.size();
-    for (unsigned i = 0; i < len;) {
+    for (unsigned i = 0; i < len;)
+    {
         // skip ws
-        while (i < len && ws(chars[i])) {
+        while (i < len && ws(chars[i]))
+        {
             ++i;
         }
         breaks.push_back(i); // word start
         // skip non-ws
-        while (i < len && !ws(chars[i])) {
+        while (i < len && !ws(chars[i]))
+        {
             ++i;
         }
         breaks.push_back(i); // word end
@@ -42,14 +46,16 @@
                     const rive::RenderGlyphRun& run,
                     unsigned startIndex,
                     unsigned endIndex,
-                    rive::Vec2D origin) {
+                    rive::Vec2D origin)
+{
     auto font = run.font.get();
     const auto scale = rive::Mat2D::fromScale(run.size, run.size);
     auto paint = factory->makeRenderPaint();
     paint->color(0xFFFFFFFF);
 
     assert(startIndex >= 0 && endIndex <= run.glyphs.size());
-    for (size_t i = startIndex; i < endIndex; ++i) {
+    for (size_t i = startIndex; i < endIndex; ++i)
+    {
         auto trans = rive::Mat2D::fromTranslate(origin.x + run.xpos[i], origin.y);
         auto rawpath = font->getPath(run.glyphs[i]);
         rawpath.transformInPlace(trans * scale);
@@ -62,11 +68,14 @@
                      rive::Renderer* renderer,
                      rive::Span<const rive::RenderGlyphLine> lines,
                      rive::Span<const rive::RenderGlyphRun> runs,
-                     rive::Vec2D origin) {
-    for (const auto& line : lines) {
+                     rive::Vec2D origin)
+{
+    for (const auto& line : lines)
+    {
         const float x0 = runs[line.startRun].xpos[line.startIndex];
         int startGIndex = line.startIndex;
-        for (int runIndex = line.startRun; runIndex <= line.endRun; ++runIndex) {
+        for (int runIndex = line.startRun; runIndex <= line.endRun; ++runIndex)
+        {
             const auto& run = runs[runIndex];
             int endGIndex = runIndex == line.endRun ? line.endIndex : run.glyphs.size();
             drawrun(factory,
@@ -83,19 +92,23 @@
 ////////////////////////////////////////////////////////////////////////////////////
 
 #ifdef RIVE_USING_HAFBUZZ_FONTS
-static rive::rcp<rive::RenderFont> load_fallback_font(rive::Span<const rive::Unichar> missing) {
+static rive::rcp<rive::RenderFont> load_fallback_font(rive::Span<const rive::Unichar> missing)
+{
     static rive::rcp<rive::RenderFont> gFallbackFont;
 
     printf("missing chars:");
-    for (auto m : missing) {
+    for (auto m : missing)
+    {
         printf(" %X", m);
     }
     printf("\n");
 
-    if (!gFallbackFont) {
+    if (!gFallbackFont)
+    {
         // TODO: make this more sharable for our test apps
         FILE* fp = fopen("/Users/mike/fonts/Arial Unicode.ttf", "rb");
-        if (!fp) {
+        if (!fp)
+        {
             return nullptr;
         }
 
@@ -116,14 +129,16 @@
 
 static std::unique_ptr<rive::RenderPath> make_line(rive::Factory* factory,
                                                    rive::Vec2D a,
-                                                   rive::Vec2D b) {
+                                                   rive::Vec2D b)
+{
     rive::RawPath rawPath;
     rawPath.move(a);
     rawPath.line(b);
     return factory->makeRenderPath(rawPath, rive::FillRule::nonZero);
 }
 
-static void draw_line(rive::Factory* factory, rive::Renderer* renderer, float x) {
+static void draw_line(rive::Factory* factory, rive::Renderer* renderer, float x)
+{
     auto paint = factory->makeRenderPaint();
     paint->style(rive::RenderPaintStyle::stroke);
     paint->thickness(1);
@@ -135,17 +150,20 @@
 static rive::RenderTextRun append(std::vector<rive::Unichar>* unichars,
                                   rive::rcp<rive::RenderFont> font,
                                   float size,
-                                  const char text[]) {
+                                  const char text[])
+{
     const uint8_t* ptr = (const uint8_t*)text;
     uint32_t n = 0;
-    while (*ptr) {
+    while (*ptr)
+    {
         unichars->push_back(rive::UTF::NextUTF8(&ptr));
         n += 1;
     }
     return {std::move(font), size, n};
 }
 
-class TextContent : public ViewerContent {
+class TextContent : public ViewerContent
+{
     std::vector<rive::Unichar> m_unichars;
     std::vector<int> m_breaks;
 
@@ -155,10 +173,12 @@
     bool m_autoWidth = false;
     int m_align = 0;
 
-    RenderFontTextRuns make_truns(RenderFontFactory fact) {
+    RenderFontTextRuns make_truns(RenderFontFactory fact)
+    {
         auto loader = [fact](const char filename[]) -> rive::rcp<rive::RenderFont> {
             auto bytes = ViewerContent::LoadFile(filename);
-            if (bytes.size() == 0) {
+            if (bytes.size() == 0)
+            {
                 assert(false);
                 return nullptr;
             }
@@ -201,14 +221,16 @@
     }
 
 public:
-    TextContent() {
+    TextContent()
+    {
         auto truns = this->make_truns(ViewerContent::DecodeFont);
         m_gruns.push_back(truns[0].font->shapeText(m_unichars, truns));
 
         m_xform = rive::Mat2D::fromTranslate(10, 0) * rive::Mat2D::fromScale(3, 3);
     }
 
-    void draw(rive::Renderer* renderer, float width, const RenderFontGlyphRuns& gruns) {
+    void draw(rive::Renderer* renderer, float width, const RenderFontGlyphRuns& gruns)
+    {
         renderer->save();
         renderer->transform(m_xform);
 
@@ -217,22 +239,26 @@
                                                        (rive::RenderTextAlign)m_align);
 
         drawpara(RiveFactory(), renderer, lines, gruns, {0, 0});
-        if (!m_autoWidth) {
+        if (!m_autoWidth)
+        {
             draw_line(RiveFactory(), renderer, width);
         }
 
         renderer->restore();
     }
 
-    void handleDraw(rive::Renderer* renderer, double) override {
-        for (auto& grun : m_gruns) {
+    void handleDraw(rive::Renderer* renderer, double) override
+    {
+        for (auto& grun : m_gruns)
+        {
             this->draw(renderer, m_width, grun);
             renderer->translate(1200, 0);
         }
     }
 
     void handleResize(int width, int height) override {}
-    void handleImgui() override {
+    void handleImgui() override
+    {
         const char* alignOptions[] = {"left", "right", "center"};
         ImGui::Begin("text", nullptr);
         ImGui::SliderFloat("Width", &m_width, 1, 400);
@@ -242,22 +268,28 @@
     }
 };
 
-static bool ends_width(const char str[], const char suffix[]) {
+static bool ends_width(const char str[], const char suffix[])
+{
     size_t ln = strlen(str);
     size_t lx = strlen(suffix);
-    if (lx > ln) {
+    if (lx > ln)
+    {
         return false;
     }
-    for (size_t i = 0; i < lx; ++i) {
-        if (str[ln - lx + i] != suffix[i]) {
+    for (size_t i = 0; i < lx; ++i)
+    {
+        if (str[ln - lx + i] != suffix[i])
+        {
             return false;
         }
     }
     return true;
 }
 
-std::unique_ptr<ViewerContent> ViewerContent::Text(const char filename[]) {
-    if (ends_width(filename, ".svg")) {
+std::unique_ptr<ViewerContent> ViewerContent::Text(const char filename[])
+{
+    if (ends_width(filename, ".svg"))
+    {
         return std::make_unique<TextContent>();
     }
     return nullptr;
diff --git a/viewer/src/viewer_content/textpath_content.cpp b/viewer/src/viewer_content/textpath_content.cpp
index 2870bbd..f511a63 100644
--- a/viewer/src/viewer_content/textpath_content.cpp
+++ b/viewer/src/viewer_content/textpath_content.cpp
@@ -19,9 +19,12 @@
 using RenderFontFactory = rcp<RenderFont> (*)(const Span<const uint8_t>);
 
 template <typename Handler>
-void visit(const Span<RenderGlyphRun>& gruns, Vec2D origin, Handler proc) {
-    for (const auto& gr : gruns) {
-        for (size_t i = 0; i < gr.glyphs.size(); ++i) {
+void visit(const Span<RenderGlyphRun>& gruns, Vec2D origin, Handler proc)
+{
+    for (const auto& gr : gruns)
+    {
+        for (size_t i = 0; i < gr.glyphs.size(); ++i)
+        {
             auto path = gr.font->getPath(gr.glyphs[i]);
             auto mx = Mat2D::fromTranslate(origin.x + gr.xpos[i], origin.y) *
                       Mat2D::fromScale(gr.size, gr.size);
@@ -33,17 +36,25 @@
 
 static Vec2D ave(Vec2D a, Vec2D b) { return (a + b) * 0.5f; }
 
-static RawPath make_quad_path(Span<const Vec2D> pts) {
+static RawPath make_quad_path(Span<const Vec2D> pts)
+{
     const int N = pts.size();
     RawPath path;
-    if (N >= 2) {
+    if (N >= 2)
+    {
         path.move(pts[0]);
-        if (N == 2) {
+        if (N == 2)
+        {
             path.line(pts[1]);
-        } else if (N == 3) {
+        }
+        else if (N == 3)
+        {
             path.quad(pts[1], pts[2]);
-        } else {
-            for (int i = 1; i < N - 2; ++i) {
+        }
+        else
+        {
+            for (int i = 1; i < N - 2; ++i)
+            {
                 path.quad(pts[i], ave(pts[i], pts[i + 1]));
             }
             path.quad(pts[N - 2], pts[N - 1]);
@@ -52,19 +63,23 @@
     return path;
 }
 
-static void warp_in_place(ContourMeasure* meas, RawPath* path) {
-    for (auto& pt : path->points()) {
+static void warp_in_place(ContourMeasure* meas, RawPath* path)
+{
+    for (auto& pt : path->points())
+    {
         pt = meas->warp(pt);
     }
 }
 
 ////////////////////////////////////////////////////////////////////////////////////
 
-static std::unique_ptr<RenderPath> make_rpath(RawPath& path) {
+static std::unique_ptr<RenderPath> make_rpath(RawPath& path)
+{
     return ViewerContent::RiveFactory()->makeRenderPath(path, FillRule::nonZero);
 }
 
-static void stroke_path(Renderer* renderer, RawPath& path, float size, ColorInt color) {
+static void stroke_path(Renderer* renderer, RawPath& path, float size, ColorInt color)
+{
     auto paint = ViewerContent::RiveFactory()->makeRenderPaint();
     paint->color(color);
     paint->thickness(size);
@@ -72,28 +87,33 @@
     renderer->drawPath(make_rpath(path).get(), paint.get());
 }
 
-static void fill_rect(Renderer* renderer, const AABB& r, RenderPaint* paint) {
+static void fill_rect(Renderer* renderer, const AABB& r, RenderPaint* paint)
+{
     RawPath rp;
     rp.addRect(r);
     renderer->drawPath(make_rpath(rp).get(), paint);
 }
 
-static void fill_point(Renderer* renderer, Vec2D p, float r, RenderPaint* paint) {
+static void fill_point(Renderer* renderer, Vec2D p, float r, RenderPaint* paint)
+{
     fill_rect(renderer, {p.x - r, p.y - r, p.x + r, p.y + r}, paint);
 }
 
 static RenderTextRun
-append(std::vector<Unichar>* unichars, rcp<RenderFont> font, float size, const char text[]) {
+append(std::vector<Unichar>* unichars, rcp<RenderFont> font, float size, const char text[])
+{
     const uint8_t* ptr = (const uint8_t*)text;
     uint32_t n = 0;
-    while (*ptr) {
+    while (*ptr)
+    {
         unichars->push_back(rive::UTF::NextUTF8(&ptr));
         n += 1;
     }
     return {std::move(font), size, n};
 }
 
-class TextPathContent : public ViewerContent {
+class TextPathContent : public ViewerContent
+{
     std::vector<Unichar> m_unichars;
     RenderFontGlyphRuns m_gruns;
     std::unique_ptr<RenderPaint> m_paint;
@@ -113,10 +133,12 @@
           m_windowWidth = 1, // %
         m_windowOffset = 0;  // %
 
-    RenderFontTextRuns make_truns(RenderFontFactory fact) {
+    RenderFontTextRuns make_truns(RenderFontFactory fact)
+    {
         auto loader = [fact](const char filename[]) -> rcp<RenderFont> {
             auto bytes = ViewerContent::LoadFile(filename);
-            if (bytes.size() == 0) {
+            if (bytes.size() == 0)
+            {
                 assert(false);
                 return nullptr;
             }
@@ -147,10 +169,12 @@
     }
 
 public:
-    TextPathContent() {
+    TextPathContent()
+    {
         auto compute_bounds = [](const rive::SimpleArray<RenderGlyphRun>& gruns) {
             AABB bounds = {};
-            for (const auto& gr : gruns) {
+            for (const auto& gr : gruns)
+            {
                 bounds.minY = std::min(bounds.minY, gr.font->lineMetrics().ascent * gr.size);
                 bounds.maxY = std::max(bounds.maxY, gr.font->lineMetrics().descent * gr.size);
             }
@@ -179,20 +203,24 @@
         m_trans = Mat2D::fromTranslate(200, 200) * Mat2D::fromScale(2, 2);
     }
 
-    void draw_warp(Renderer* renderer, RawPath& warp) {
+    void draw_warp(Renderer* renderer, RawPath& warp)
+    {
         stroke_path(renderer, warp, 0.5, 0xFF00FF00);
 
         auto paint = ViewerContent::RiveFactory()->makeRenderPaint();
         paint->color(0xFF008800);
         const float r = 4;
-        for (auto p : m_pathpts) {
+        for (auto p : m_pathpts)
+        {
             fill_point(renderer, p, r, paint.get());
         }
     }
 
-    static size_t count_glyphs(const RenderFontGlyphRuns& gruns) {
+    static size_t count_glyphs(const RenderFontGlyphRuns& gruns)
+    {
         size_t n = 0;
-        for (const auto& gr : gruns) {
+        for (const auto& gr : gruns)
+        {
             n += gr.glyphs.size();
         }
         return n;
@@ -200,7 +228,8 @@
 
     void modify(float amount) { m_paint->color(0xFFFFFFFF); }
 
-    void draw(Renderer* renderer, const RenderFontGlyphRuns& gruns) {
+    void draw(Renderer* renderer, const RenderFontGlyphRuns& gruns)
+    {
         auto get_path = [this](const RenderGlyphRun& run, int index, float dx) {
             auto path = run.font->getPath(run.glyphs[index]);
             path.transformInPlace(Mat2D::fromTranslate(run.xpos[index] + dx, m_offsetY) *
@@ -224,15 +253,18 @@
         size_t glyphIndex = 0;
         float windowEnd = m_windowOffset + m_windowWidth;
 
-        for (const auto& gr : gruns) {
-            for (size_t i = 0; i < gr.glyphs.size(); ++i) {
+        for (const auto& gr : gruns)
+        {
+            for (size_t i = 0; i < gr.glyphs.size(); ++i)
+            {
                 float percent = glyphIndex / (float)(glyphCount - 1);
                 float amount = (percent >= m_windowOffset && percent <= windowEnd);
 
                 float scaleY = m_scaleY;
                 m_paint->color(0xFF666666);
                 m_paint->style(RenderPaintStyle::fill);
-                if (amount > 0) {
+                if (amount > 0)
+                {
                     this->modify(amount);
                 }
 
@@ -246,11 +278,13 @@
         renderer->restore();
     }
 
-    void drawOneLine(Renderer* renderer) {
+    void drawOneLine(Renderer* renderer)
+    {
         auto paint = ViewerContent::RiveFactory()->makeRenderPaint();
         paint->color(0xFF88FFFF);
 
-        if (m_trackingOneLine) {
+        if (m_trackingOneLine)
+        {
             float mx = m_oneLineX / m_gbounds.width();
             const ColorInt colors[] = {0xFF88FFFF, 0xFF88FFFF, 0xFFFFFFFF, 0xFF88FFFF, 0xFF88FFFF};
             const float stops[] = {0, mx / 2, mx, (1 + mx) / 2, 1};
@@ -263,12 +297,15 @@
                                                                            5));
         }
 
-        struct EaseWindow {
+        struct EaseWindow
+        {
             float center, radius;
 
-            float map(float x) const {
+            float map(float x) const
+            {
                 float dist = std::abs(center - x);
-                if (dist > radius) {
+                if (dist > radius)
+                {
                     return 0;
                 }
                 float t = (radius - dist) / radius;
@@ -289,7 +326,8 @@
         visit(m_gruns, {0, 0}, [&](RawPath& rp) {
             RawPath* ptr = &rp;
             RawPath storage;
-            if (m_trackingOneLine) {
+            if (m_trackingOneLine)
+            {
                 storage = wrap_path(rp, m_oneLineX, m_flareRadius);
                 ptr = &storage;
             }
@@ -297,7 +335,8 @@
         });
     }
 
-    void handleDraw(rive::Renderer* renderer, double) override {
+    void handleDraw(rive::Renderer* renderer, double) override
+    {
         renderer->save();
         this->draw(renderer, m_gruns);
         renderer->restore();
@@ -308,7 +347,8 @@
         renderer->restore();
     }
 
-    void handlePointerMove(float x, float y) override {
+    void handlePointerMove(float x, float y) override
+    {
         auto contains = [](const AABB& r, Vec2D p) {
             return r.left() <= p.x && p.x < r.right() && r.top() <= p.y && p.y < r.bottom();
         };
@@ -317,7 +357,8 @@
         {
             m_trackingOneLine = false;
             auto pos = m_oneLineXform.invertOrIdentity() * Vec2D{x, y};
-            if (contains(m_gbounds.inset(-8, 0), pos)) {
+            if (contains(m_gbounds.inset(-8, 0), pos))
+            {
                 m_trackingOneLine = true;
                 m_oneLineX = pos.x;
                 return;
@@ -326,14 +367,18 @@
 
         // are we on the path?
         m_lastPt = m_trans.invertOrIdentity() * Vec2D{x, y};
-        if (m_trackingIndex >= 0) {
+        if (m_trackingIndex >= 0)
+        {
             m_pathpts[m_trackingIndex] = m_lastPt;
         }
     }
-    void handlePointerDown(float x, float y) override {
+    void handlePointerDown(float x, float y) override
+    {
         auto close_to = [](Vec2D a, Vec2D b) { return Vec2D::distance(a, b) <= 10; };
-        for (size_t i = 0; i < m_pathpts.size(); ++i) {
-            if (close_to(m_lastPt, m_pathpts[i])) {
+        for (size_t i = 0; i < m_pathpts.size(); ++i)
+        {
+            if (close_to(m_lastPt, m_pathpts[i]))
+            {
                 m_trackingIndex = i;
                 break;
             }
@@ -344,7 +389,8 @@
 
     void handleResize(int width, int height) override {}
 
-    void handleImgui() override {
+    void handleImgui() override
+    {
         ImGui::Begin("path", nullptr);
         ImGui::SliderFloat("Alignment", &m_alignment, -3, 4);
         ImGui::SliderFloat("Scale Y", &m_scaleY, 0.25f, 3.0f);
@@ -356,6 +402,7 @@
     }
 };
 
-std::unique_ptr<ViewerContent> ViewerContent::TextPath(const char filename[]) {
+std::unique_ptr<ViewerContent> ViewerContent::TextPath(const char filename[])
+{
     return std::make_unique<TextPathContent>();
 }
diff --git a/viewer/src/viewer_content/trimpath_content.cpp b/viewer/src/viewer_content/trimpath_content.cpp
index 760bb9c..f72bd4a 100644
--- a/viewer/src/viewer_content/trimpath_content.cpp
+++ b/viewer/src/viewer_content/trimpath_content.cpp
@@ -11,17 +11,25 @@
 
 static Vec2D ave(Vec2D a, Vec2D b) { return (a + b) * 0.5f; }
 
-static RawPath make_quad_path(Span<const Vec2D> pts) {
+static RawPath make_quad_path(Span<const Vec2D> pts)
+{
     const int N = pts.size();
     RawPath path;
-    if (N >= 2) {
+    if (N >= 2)
+    {
         path.move(pts[0]);
-        if (N == 2) {
+        if (N == 2)
+        {
             path.line(pts[1]);
-        } else if (N == 3) {
+        }
+        else if (N == 3)
+        {
             path.quad(pts[1], pts[2]);
-        } else {
-            for (int i = 1; i < N - 2; ++i) {
+        }
+        else
+        {
+            for (int i = 1; i < N - 2; ++i)
+            {
                 path.quad(pts[i], ave(pts[i], pts[i + 1]));
             }
             path.quad(pts[N - 2], pts[N - 1]);
@@ -32,11 +40,13 @@
 
 ////////////////////////////////////////////////////////////////////////////////////
 
-static std::unique_ptr<RenderPath> make_rpath(RawPath& path) {
+static std::unique_ptr<RenderPath> make_rpath(RawPath& path)
+{
     return ViewerContent::RiveFactory()->makeRenderPath(path, FillRule::nonZero);
 }
 
-static void stroke_path(Renderer* renderer, RawPath& path, float size, ColorInt color) {
+static void stroke_path(Renderer* renderer, RawPath& path, float size, ColorInt color)
+{
     auto paint = ViewerContent::RiveFactory()->makeRenderPaint();
     paint->color(color);
     paint->thickness(size);
@@ -44,21 +54,25 @@
     renderer->drawPath(make_rpath(path).get(), paint.get());
 }
 
-static void fill_rect(Renderer* renderer, const AABB& r, RenderPaint* paint) {
+static void fill_rect(Renderer* renderer, const AABB& r, RenderPaint* paint)
+{
     RawPath rp;
     rp.addRect(r);
     renderer->drawPath(make_rpath(rp).get(), paint);
 }
 
-static void fill_point(Renderer* renderer, Vec2D p, float r, RenderPaint* paint) {
+static void fill_point(Renderer* renderer, Vec2D p, float r, RenderPaint* paint)
+{
     fill_rect(renderer, {p.x - r, p.y - r, p.x + r, p.y + r}, paint);
 }
 
-static RawPath trim(ContourMeasure* cm, float startT, float endT) {
+static RawPath trim(ContourMeasure* cm, float startT, float endT)
+{
     // start and end are 0...1
     auto startD = startT * cm->length();
     auto endD = endT * cm->length();
-    if (startD > endD) {
+    if (startD > endD)
+    {
         std::swap(startD, endD);
     }
 
@@ -67,14 +81,16 @@
     return path;
 }
 
-class TrimPathContent : public ViewerContent {
+class TrimPathContent : public ViewerContent
+{
     std::vector<Vec2D> m_pathpts;
     int m_trackingIndex = -1;
 
     float m_trimFrom = 0, m_trimTo = 1;
 
 public:
-    TrimPathContent() {
+    TrimPathContent()
+    {
         m_pathpts.push_back({20, 300});
         m_pathpts.push_back({220, 100});
         m_pathpts.push_back({420, 500});
@@ -82,7 +98,8 @@
         m_pathpts.push_back({820, 300});
     }
 
-    void handleDraw(rive::Renderer* renderer, double) override {
+    void handleDraw(rive::Renderer* renderer, double) override
+    {
         auto path = make_quad_path(m_pathpts);
 
         RawPath cubicpath;
@@ -93,7 +110,8 @@
         RawPath* ps[] = {&path, &cubicpath};
 
         renderer->save();
-        for (auto p : ps) {
+        for (auto p : ps)
+        {
             renderer->save();
 
             auto cm = ContourMeasureIter(*p, false).next();
@@ -110,21 +128,27 @@
         auto paint = ViewerContent::RiveFactory()->makeRenderPaint();
         paint->color(0xFF008800);
         const float r = 6;
-        for (auto p : m_pathpts) {
+        for (auto p : m_pathpts)
+        {
             fill_point(renderer, p, r, paint.get());
         }
     }
 
-    void handlePointerMove(float x, float y) override {
-        if (m_trackingIndex >= 0) {
+    void handlePointerMove(float x, float y) override
+    {
+        if (m_trackingIndex >= 0)
+        {
             m_pathpts[m_trackingIndex] = Vec2D{x, y};
         }
     }
-    void handlePointerDown(float x, float y) override {
+    void handlePointerDown(float x, float y) override
+    {
         auto pt = Vec2D{x, y};
         auto close_to = [](Vec2D a, Vec2D b) { return Vec2D::distance(a, b) <= 10; };
-        for (size_t i = 0; i < m_pathpts.size(); ++i) {
-            if (close_to(pt, m_pathpts[i])) {
+        for (size_t i = 0; i < m_pathpts.size(); ++i)
+        {
+            if (close_to(pt, m_pathpts[i]))
+            {
                 m_trackingIndex = i;
                 break;
             }
@@ -135,7 +159,8 @@
 
     void handleResize(int width, int height) override {}
 
-    void handleImgui() override {
+    void handleImgui() override
+    {
         ImGui::Begin("trim", nullptr);
         ImGui::SliderFloat("From", &m_trimFrom, 0, 1);
         ImGui::SliderFloat("To", &m_trimTo, 0, 1);
@@ -143,6 +168,7 @@
     }
 };
 
-std::unique_ptr<ViewerContent> ViewerContent::TrimPath(const char[]) {
+std::unique_ptr<ViewerContent> ViewerContent::TrimPath(const char[])
+{
     return std::make_unique<TrimPathContent>();
 }
diff --git a/viewer/src/viewer_content/viewer_content.cpp b/viewer/src/viewer_content/viewer_content.cpp
index 3ecc6fb..e60dfd2 100644
--- a/viewer/src/viewer_content/viewer_content.cpp
+++ b/viewer/src/viewer_content/viewer_content.cpp
@@ -20,11 +20,13 @@
     "image",
 };
 
-std::vector<uint8_t> ViewerContent::LoadFile(const char filename[]) {
+std::vector<uint8_t> ViewerContent::LoadFile(const char filename[])
+{
     std::vector<uint8_t> bytes;
 
     FILE* fp = fopen(filename, "rb");
-    if (!fp) {
+    if (!fp)
+    {
         fprintf(stderr, "Can't find file: %s\n", filename);
         return bytes;
     }
@@ -37,21 +39,25 @@
     size_t bytesRead = fread(bytes.data(), 1, size, fp);
     fclose(fp);
 
-    if (bytesRead != size) {
+    if (bytesRead != size)
+    {
         fprintf(stderr, "Failed to read all of %s\n", filename);
         bytes.resize(0);
     }
     return bytes;
 }
 
-void ViewerContent::DumpCounters(const char label[]) {
+void ViewerContent::DumpCounters(const char label[])
+{
     assert(sizeof(gCounterNames) / sizeof(gCounterNames[0]) == rive::Counter::kLastType + 1);
 
-    if (label == nullptr) {
+    if (label == nullptr)
+    {
         label = "Counters";
     }
     printf("%s:", label);
-    for (int i = 0; i <= rive::Counter::kLastType; ++i) {
+    for (int i = 0; i <= rive::Counter::kLastType; ++i)
+    {
         printf(" [%s]:%d", gCounterNames[i], rive::Counter::counts[i]);
     }
     printf("\n");
@@ -64,12 +70,14 @@
 #ifdef RIVE_BUILD_FOR_APPLE
 // note: we can use harfbuzz even on apple ... (if we want)
 #include "renderfont_coretext.hpp"
-rive::rcp<rive::RenderFont> ViewerContent::DecodeFont(rive::Span<const uint8_t> span) {
+rive::rcp<rive::RenderFont> ViewerContent::DecodeFont(rive::Span<const uint8_t> span)
+{
     return CoreTextRenderFont::Decode(span);
 }
 #else
 #include "renderfont_hb.hpp"
-rive::rcp<rive::RenderFont> ViewerContent::DecodeFont(rive::Span<const uint8_t> span) {
+rive::rcp<rive::RenderFont> ViewerContent::DecodeFont(rive::Span<const uint8_t> span)
+{
     return HBRenderFont::Decode(span);
 }
 #endif