Simplify factory and renderer APIs

Some good idea, perhaps for the future, but for now we don't take advantage of (nor does canvas2d support) ...
- local matrix on gradients or images
- tiling modes on gradients or images
- patterns (i.e. image->makeShader())
... so removing these (speculative) APIs from our porting layers.

If we decide to support some of these in the future, easy to add them back (but for now, we never used or tested them).

Diffs=
034d4f833 Simplify factory and renderer APIs
diff --git a/.rive_head b/.rive_head
index da794fc..87d3f8d 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-0e9a756b373456564d442a959742b506b08adf44
+034d4f8330faf92f2db19eef27e834425f5300ca
diff --git a/include/rive/factory.hpp b/include/rive/factory.hpp
index f2c9457..4283fe8 100644
--- a/include/rive/factory.hpp
+++ b/include/rive/factory.hpp
@@ -33,18 +33,14 @@
                                                      float ey,
                                                      const ColorInt colors[], // [count]
                                                      const float stops[],     // [count]
-                                                     size_t count,
-                                                     RenderTileMode,
-                                                     const Mat2D* localMatrix = nullptr) = 0;
+                                                     size_t count) = 0;
 
         virtual rcp<RenderShader> makeRadialGradient(float cx,
                                                      float cy,
                                                      float radius,
                                                      const ColorInt colors[], // [count]
                                                      const float stops[],     // [count]
-                                                     size_t count,
-                                                     RenderTileMode,
-                                                     const Mat2D* localMatrix = nullptr) = 0;
+                                                     size_t count) = 0;
 
         // Returns a full-formed RenderPath -- can be treated as immutable
         virtual std::unique_ptr<RenderPath>
diff --git a/include/rive/renderer.hpp b/include/rive/renderer.hpp
index 7ca73a4..6616d97 100644
--- a/include/rive/renderer.hpp
+++ b/include/rive/renderer.hpp
@@ -39,13 +39,6 @@
 
     enum class RenderPaintStyle { stroke, fill };
 
-    enum class RenderTileMode {
-        clamp,
-        repeat,
-        mirror,
-        decal, // fill outside the domain with transparent
-    };
-
     /*
      *  Base class for Render objects that specify the src colors.
      *
@@ -85,10 +78,6 @@
 
         int width() const { return m_Width; }
         int height() const { return m_Height; }
-
-        virtual rcp<RenderShader> makeShader(RenderTileMode tx,
-                                             RenderTileMode ty,
-                                             const Mat2D* localMatrix = nullptr) const = 0;
     };
 
     class RenderPath : public CommandPath {
diff --git a/skia/renderer/include/cg_factory.hpp b/skia/renderer/include/cg_factory.hpp
index d8534c9..5fee199 100644
--- a/skia/renderer/include/cg_factory.hpp
+++ b/skia/renderer/include/cg_factory.hpp
@@ -22,18 +22,14 @@
                                              float ey,
                                              const ColorInt colors[], // [count]
                                              const float stops[],     // [count]
-                                             size_t count,
-                                             RenderTileMode,
-                                             const Mat2D* localMatrix = nullptr) override;
+                                             size_t count) override;
 
         rcp<RenderShader> makeRadialGradient(float cx,
                                              float cy,
                                              float radius,
                                              const ColorInt colors[], // [count]
                                              const float stops[],     // [count]
-                                             size_t count,
-                                             RenderTileMode,
-                                             const Mat2D* localMatrix = nullptr) override;
+                                             size_t count) override;
 
         std::unique_ptr<RenderPath>
         makeRenderPath(Span<const Vec2D> points, Span<const PathVerb> verbs, FillRule) override;
diff --git a/skia/renderer/include/skia_factory.hpp b/skia/renderer/include/skia_factory.hpp
index b3cb706..772c047 100644
--- a/skia/renderer/include/skia_factory.hpp
+++ b/skia/renderer/include/skia_factory.hpp
@@ -22,18 +22,14 @@
                                              float ey,
                                              const ColorInt colors[], // [count]
                                              const float stops[],     // [count]
-                                             size_t count,
-                                             RenderTileMode,
-                                             const Mat2D* localMatrix = nullptr) override;
+                                             size_t count) override;
 
         rcp<RenderShader> makeRadialGradient(float cx,
                                              float cy,
                                              float radius,
                                              const ColorInt colors[], // [count]
                                              const float stops[],     // [count]
-                                             size_t count,
-                                             RenderTileMode,
-                                             const Mat2D* localMatrix = nullptr) override;
+                                             size_t count) override;
 
         std::unique_ptr<RenderPath>
         makeRenderPath(Span<const Vec2D> points, Span<const PathVerb> verbs, FillRule) override;
diff --git a/skia/renderer/include/to_skia.hpp b/skia/renderer/include/to_skia.hpp
index e73b254..2234f4a 100644
--- a/skia/renderer/include/to_skia.hpp
+++ b/skia/renderer/include/to_skia.hpp
@@ -29,17 +29,6 @@
         static SkPoint convert(rive::Vec2D point) { return SkPoint::Make(point.x, point.y); }
 
         // clang-format off
-        static SkTileMode convert(RenderTileMode rtm) {
-            switch (rtm) {
-                case RenderTileMode::clamp:  return SkTileMode::kClamp;
-                case RenderTileMode::repeat: return SkTileMode::kRepeat;
-                case RenderTileMode::mirror: return SkTileMode::kMirror;
-                case RenderTileMode::decal:  return SkTileMode::kDecal;
-            }
-            assert(false);
-            return SkTileMode::kClamp;
-        }
-
         static SkPathFillType convert(FillRule value) {
             switch (value) {
                 case FillRule::evenOdd: return SkPathFillType::kEvenOdd;
diff --git a/skia/renderer/src/cg_factory.cpp b/skia/renderer/src/cg_factory.cpp
index 94c4be8..c4d25bb 100644
--- a/skia/renderer/src/cg_factory.cpp
+++ b/skia/renderer/src/cg_factory.cpp
@@ -264,11 +264,6 @@
         }
     }
 
-    rcp<RenderShader>
-    makeShader(RenderTileMode tx, RenderTileMode ty, const Mat2D* localMatrix) const override {
-        return rcp<RenderShader>(new CGRenderShader);
-    }
-
     static CGImageRef Cast(const RenderImage* image) {
         return reinterpret_cast<const CGRenderImage*>(image)->m_image.get();
     }
@@ -437,9 +432,7 @@
                                                 float ey,
                                                 const ColorInt colors[], // [count]
                                                 const float stops[],     // [count]
-                                                size_t count,
-                                                RenderTileMode,
-                                                const Mat2D*) {
+                                                size_t count) {
     return rcp<RenderShader>(
         new CGLinearGradientRenderShader(sx, sy, ex, ey, colors, stops, count));
 }
@@ -449,9 +442,7 @@
                                                 float radius,
                                                 const ColorInt colors[], // [count]
                                                 const float stops[],     // [count]
-                                                size_t count,
-                                                RenderTileMode mode,
-                                                const Mat2D* localMatrix) {
+                                                size_t count) {
     return rcp<RenderShader>(
         new CGRadialGradientRenderShader(cx, cy, radius, colors, stops, count));
 }
diff --git a/skia/renderer/src/skia_factory.cpp b/skia/renderer/src/skia_factory.cpp
index 3ba0bfb..086a28d 100644
--- a/skia/renderer/src/skia_factory.cpp
+++ b/skia/renderer/src/skia_factory.cpp
@@ -67,9 +67,6 @@
     SkiaRenderImage(sk_sp<SkImage> image);
 
     sk_sp<SkImage> skImage() const { return m_SkImage; }
-
-    rcp<RenderShader>
-    makeShader(RenderTileMode tx, RenderTileMode ty, const Mat2D* localMatrix) const override;
 };
 
 class SkiaBuffer : public RenderBuffer {
@@ -239,13 +236,6 @@
     m_Height = m_SkImage->height();
 }
 
-rcp<RenderShader>
-SkiaRenderImage::makeShader(RenderTileMode tx, RenderTileMode ty, const Mat2D* localMatrix) const {
-    const SkMatrix lm = localMatrix ? ToSkia::convert(*localMatrix) : SkMatrix();
-    auto sh = m_SkImage->makeShader(ToSkia::convert(tx), ToSkia::convert(ty), gSampling, &lm);
-    return rcp<RenderShader>(new SkiaRenderShader(std::move(sh)));
-}
-
 // Factory
 
 rcp<RenderBuffer> SkiaFactory::makeBufferU16(Span<const uint16_t> data) {
@@ -264,13 +254,10 @@
                                                   float ey,
                                                   const ColorInt colors[], // [count]
                                                   const float stops[],     // [count]
-                                                  size_t count,
-                                                  RenderTileMode mode,
-                                                  const Mat2D* localMatrix) {
+                                                  size_t count) {
     const SkPoint pts[] = {{sx, sy}, {ex, ey}};
-    const SkMatrix lm = localMatrix ? ToSkia::convert(*localMatrix) : SkMatrix();
-    auto sh = SkGradientShader::MakeLinear(
-        pts, (const SkColor*)colors, stops, count, ToSkia::convert(mode), 0, &lm);
+    auto sh =
+        SkGradientShader::MakeLinear(pts, (const SkColor*)colors, stops, count, SkTileMode::kClamp);
     return rcp<RenderShader>(new SkiaRenderShader(std::move(sh)));
 }
 
@@ -279,12 +266,9 @@
                                                   float radius,
                                                   const ColorInt colors[], // [count]
                                                   const float stops[],     // [count]
-                                                  size_t count,
-                                                  RenderTileMode mode,
-                                                  const Mat2D* localMatrix) {
-    const SkMatrix lm = localMatrix ? ToSkia::convert(*localMatrix) : SkMatrix();
+                                                  size_t count) {
     auto sh = SkGradientShader::MakeRadial(
-        {cx, cy}, radius, (const SkColor*)colors, stops, count, ToSkia::convert(mode), 0, &lm);
+        {cx, cy}, radius, (const SkColor*)colors, stops, count, SkTileMode::kClamp);
     return rcp<RenderShader>(new SkiaRenderShader(std::move(sh)));
 }
 
diff --git a/src/shapes/paint/linear_gradient.cpp b/src/shapes/paint/linear_gradient.cpp
index 5071b8d..1d28510 100644
--- a/src/shapes/paint/linear_gradient.cpp
+++ b/src/shapes/paint/linear_gradient.cpp
@@ -99,8 +99,8 @@
 void LinearGradient::makeGradient(
     Vec2D start, Vec2D end, const ColorInt colors[], const float stops[], size_t count) {
     auto factory = artboard()->factory();
-    renderPaint()->shader(factory->makeLinearGradient(
-        start.x, start.y, end.x, end.y, colors, stops, count, RenderTileMode::clamp));
+    renderPaint()->shader(
+        factory->makeLinearGradient(start.x, start.y, end.x, end.y, colors, stops, count));
 }
 
 void LinearGradient::markGradientDirty() { addDirt(ComponentDirt::Paint); }
diff --git a/src/shapes/paint/radial_gradient.cpp b/src/shapes/paint/radial_gradient.cpp
index 92e3b28..25e8c2e 100644
--- a/src/shapes/paint/radial_gradient.cpp
+++ b/src/shapes/paint/radial_gradient.cpp
@@ -7,11 +7,6 @@
 void RadialGradient::makeGradient(
     Vec2D start, Vec2D end, const ColorInt colors[], const float stops[], size_t count) {
     auto factory = artboard()->factory();
-    renderPaint()->shader(factory->makeRadialGradient(start.x,
-                                                      start.y,
-                                                      Vec2D::distance(start, end),
-                                                      colors,
-                                                      stops,
-                                                      count,
-                                                      RenderTileMode::clamp));
+    renderPaint()->shader(factory->makeRadialGradient(
+        start.x, start.y, Vec2D::distance(start, end), colors, stops, count));
 }
diff --git a/tess/include/rive/tess/sokol/sokol_factory.hpp b/tess/include/rive/tess/sokol/sokol_factory.hpp
index 2d81a1d..78ff5a7 100644
--- a/tess/include/rive/tess/sokol/sokol_factory.hpp
+++ b/tess/include/rive/tess/sokol/sokol_factory.hpp
@@ -24,18 +24,14 @@
                                              float ey,
                                              const ColorInt colors[], // [count]
                                              const float stops[],     // [count]
-                                             size_t count,
-                                             RenderTileMode,
-                                             const Mat2D* localMatrix = nullptr) override;
+                                             size_t count) override;
 
         rcp<RenderShader> makeRadialGradient(float cx,
                                              float cy,
                                              float radius,
                                              const ColorInt colors[], // [count]
                                              const float stops[],     // [count]
-                                             size_t count,
-                                             RenderTileMode,
-                                             const Mat2D* localMatrix = nullptr) override;
+                                             size_t count) override;
 
         // Returns a full-formed RenderPath -- can be treated as immutable
         std::unique_ptr<RenderPath>
diff --git a/tess/include/rive/tess/sokol/sokol_tess_renderer.hpp b/tess/include/rive/tess/sokol/sokol_tess_renderer.hpp
index 97e8cec..5bc7aee 100644
--- a/tess/include/rive/tess/sokol/sokol_tess_renderer.hpp
+++ b/tess/include/rive/tess/sokol/sokol_tess_renderer.hpp
@@ -17,10 +17,6 @@
     public:
         SokolRenderImage(sg_image image);
         sg_image image() const { return m_Image; }
-
-        rcp<RenderShader> makeShader(RenderTileMode, RenderTileMode, const Mat2D*) const override {
-            return nullptr;
-        }
     };
 
     class SokolTessRenderer : public TessRenderer {
diff --git a/tess/src/sokol/sokol_factory.cpp b/tess/src/sokol/sokol_factory.cpp
index 1613e4e..62cb783 100644
--- a/tess/src/sokol/sokol_factory.cpp
+++ b/tess/src/sokol/sokol_factory.cpp
@@ -35,9 +35,7 @@
                                                    float ey,
                                                    const ColorInt colors[], // [count]
                                                    const float stops[],     // [count]
-                                                   size_t count,
-                                                   RenderTileMode,
-                                                   const Mat2D* localMatrix) {
+                                                   size_t count) {
     return nullptr;
 }
 
@@ -46,9 +44,7 @@
                                                    float radius,
                                                    const ColorInt colors[], // [count]
                                                    const float stops[],     // [count]
-                                                   size_t count,
-                                                   RenderTileMode,
-                                                   const Mat2D* localMatrix) {
+                                                   size_t count) {
     return nullptr;
 }
 
diff --git a/test/no_op_factory.cpp b/test/no_op_factory.cpp
index ba900a1..dc8703c 100644
--- a/test/no_op_factory.cpp
+++ b/test/no_op_factory.cpp
@@ -15,9 +15,7 @@
                                                   float ey,
                                                   const ColorInt colors[], // [count]
                                                   const float stops[],     // [count]
-                                                  size_t count,
-                                                  RenderTileMode,
-                                                  const Mat2D* localMatrix) {
+                                                  size_t count) {
     return nullptr;
 }
 
@@ -26,9 +24,7 @@
                                                   float radius,
                                                   const ColorInt colors[], // [count]
                                                   const float stops[],     // [count]
-                                                  size_t count,
-                                                  RenderTileMode,
-                                                  const Mat2D* localMatrix) {
+                                                  size_t count) {
     return nullptr;
 }
 
diff --git a/test/no_op_factory.hpp b/test/no_op_factory.hpp
index d794ee2..f0f7330 100644
--- a/test/no_op_factory.hpp
+++ b/test/no_op_factory.hpp
@@ -17,18 +17,14 @@
                                              float ey,
                                              const ColorInt colors[], // [count]
                                              const float stops[],     // [count]
-                                             size_t count,
-                                             RenderTileMode,
-                                             const Mat2D* localMatrix = nullptr) override;
+                                             size_t count) override;
 
         rcp<RenderShader> makeRadialGradient(float cx,
                                              float cy,
                                              float radius,
                                              const ColorInt colors[], // [count]
                                              const float stops[],     // [count]
-                                             size_t count,
-                                             RenderTileMode,
-                                             const Mat2D* localMatrix = nullptr) override;
+                                             size_t count) override;
 
         std::unique_ptr<RenderPath>
         makeRenderPath(Span<const Vec2D> points, Span<const PathVerb> verbs, FillRule) override;
diff --git a/test/no_op_renderer.hpp b/test/no_op_renderer.hpp
index b5e9bb5..2587f86 100644
--- a/test/no_op_renderer.hpp
+++ b/test/no_op_renderer.hpp
@@ -6,12 +6,7 @@
 #include <vector>
 
 namespace rive {
-    class NoOpRenderImage : public RenderImage {
-    public:
-        rcp<RenderShader> makeShader(RenderTileMode, RenderTileMode, const Mat2D*) const override {
-            return nullptr;
-        }
-    };
+    class NoOpRenderImage : public RenderImage {};
 
     class NoOpRenderPaint : public RenderPaint {
     public:
diff --git a/viewer/src/viewer_content/textpath_content.cpp b/viewer/src/viewer_content/textpath_content.cpp
index 8a438c5..7206c28 100644
--- a/viewer/src/viewer_content/textpath_content.cpp
+++ b/viewer/src/viewer_content/textpath_content.cpp
@@ -259,14 +259,8 @@
             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};
-            paint->shader(ViewerContent::RiveFactory()->makeLinearGradient(m_gbounds.left(),
-                                                                           0,
-                                                                           m_gbounds.right(),
-                                                                           0,
-                                                                           colors,
-                                                                           stops,
-                                                                           5,
-                                                                           RenderTileMode::clamp));
+            paint->shader(ViewerContent::RiveFactory()->makeLinearGradient(
+                m_gbounds.left(), 0, m_gbounds.right(), 0, colors, stops, 5));
         }
 
         struct EaseWindow {