"Modularize" SkSG

* relocate all SkSG-related files under modules/sksg/
* fix various tidbits to make non-sksg builds possible
* drop obsolete SampleSGInval.cpp

Change-Id: I54e6c5bb1a09f45030fa8d607b3eb3f7cba78957
Reviewed-on: https://skia-review.googlesource.com/130025
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/BUILD.gn b/BUILD.gn
index 1f51566..c9eb170 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1376,11 +1376,11 @@
     public_include_dirs = [ "gm" ]
     sources = gm_sources
     deps = [
-      ":experimental_sksg",
       ":flags",
       ":gpu_tool_utils",
       ":skia",
       ":tool_utils",
+      "modules/sksg",
     ]
   }
 
@@ -1392,12 +1392,12 @@
       sources -= [ "//tests/FontMgrAndroidParserTest.cpp" ]
     }
     deps = [
-      ":experimental_sksg",
       ":experimental_svg_model",
       ":flags",
       ":skia",
       ":third_party_skcms",
       ":tool_utils",
+      "modules/sksg:tests",
       "//third_party/libpng",
       "//third_party/zlib",
     ]
@@ -1432,8 +1432,8 @@
         "experimental/skottie/SkottieValue.cpp",
       ]
       deps = [
-        ":experimental_sksg",
         ":skia",
+        "modules/sksg",
         "//third_party/rapidjson",
       ]
     }
@@ -1475,44 +1475,6 @@
     }
   }
 
-  test_lib("experimental_sksg") {
-    public_include_dirs = [
-      "experimental/sksg",
-      "experimental/sksg/effects",
-      "experimental/sksg/geometry",
-      "experimental/sksg/paint",
-    ]
-    sources = [
-      "experimental/sksg/SkSGDraw.cpp",
-      "experimental/sksg/SkSGEffectNode.cpp",
-      "experimental/sksg/SkSGGeometryNode.cpp",
-      "experimental/sksg/SkSGGroup.cpp",
-      "experimental/sksg/SkSGImage.cpp",
-      "experimental/sksg/SkSGInvalidationController.cpp",
-      "experimental/sksg/SkSGNode.cpp",
-      "experimental/sksg/SkSGPaintNode.cpp",
-      "experimental/sksg/SkSGRenderNode.cpp",
-      "experimental/sksg/SkSGScene.cpp",
-      "experimental/sksg/effects/SkSGClipEffect.cpp",
-      "experimental/sksg/effects/SkSGMaskEffect.cpp",
-      "experimental/sksg/effects/SkSGOpacityEffect.cpp",
-      "experimental/sksg/effects/SkSGTransform.cpp",
-      "experimental/sksg/geometry/SkSGGeometryTransform.cpp",
-      "experimental/sksg/geometry/SkSGMerge.cpp",
-      "experimental/sksg/geometry/SkSGPath.cpp",
-      "experimental/sksg/geometry/SkSGPlane.cpp",
-      "experimental/sksg/geometry/SkSGRect.cpp",
-      "experimental/sksg/geometry/SkSGRoundEffect.cpp",
-      "experimental/sksg/geometry/SkSGText.cpp",
-      "experimental/sksg/geometry/SkSGTrimEffect.cpp",
-      "experimental/sksg/paint/SkSGColor.cpp",
-      "experimental/sksg/paint/SkSGGradient.cpp",
-    ]
-    deps = [
-      ":skia",
-    ]
-  }
-
   if (target_cpu != "wasm") {
     test_lib("views") {
       public_include_dirs = [ "include/views" ]
@@ -1591,7 +1553,6 @@
       include_dirs = [ "experimental" ]
       sources = samples_sources
       deps = [
-        ":experimental_sksg",
         ":experimental_svg_model",
         ":flags",
         ":gm",
@@ -1599,6 +1560,7 @@
         ":tool_utils",
         ":views",
         ":xml",
+        "modules/sksg:samples",
       ]
 
       if (skia_use_lua) {
@@ -1620,7 +1582,6 @@
       deps = [
         ":common_flags",
         ":experimental_skottie",
-        ":experimental_sksg",
         ":experimental_svg_model",
         ":flags",
         ":gm",
@@ -1629,6 +1590,7 @@
         ":tests",
         ":third_party_skcms",
         ":tool_utils",
+        "modules/sksg",
         "//third_party/jsoncpp",
         "//third_party/libpng",
       ]
@@ -1653,13 +1615,13 @@
     deps = [
       ":bench",
       ":common_flags",
-      ":experimental_sksg",
       ":experimental_svg_model",
       ":flags",
       ":gm",
       ":gpu_tool_utils",
       ":skia",
       ":tool_utils",
+      "modules/sksg",
       "//third_party/jsoncpp",
     ]
   }
@@ -2069,7 +2031,6 @@
 
       include_dirs = []
       deps = [
-        ":experimental_sksg",
         ":experimental_svg_model",
         ":flags",
         ":gm",
@@ -2079,6 +2040,7 @@
         ":skia",
         ":tool_utils",
         ":views",
+        "modules/sksg",
         "//third_party/imgui",
         "//third_party/jsoncpp",
       ]
diff --git a/gn/samples.gni b/gn/samples.gni
index 135cf78..b5728b3 100644
--- a/gn/samples.gni
+++ b/gn/samples.gni
@@ -88,9 +88,7 @@
   "$_samplecode/SampleStrokePath.cpp",
   "$_samplecode/SampleStrokeRect.cpp",
   "$_samplecode/SampleSubpixelTranslate.cpp",
-  "$_samplecode/SampleSGInval.cpp",
   "$_samplecode/SampleSVGFile.cpp",
-  "$_samplecode/SampleSVGPong.cpp",
   "$_samplecode/SampleText.cpp",
   "$_samplecode/SampleTextAlpha.cpp",
   "$_samplecode/SampleTextBox.cpp",
diff --git a/gn/tests.gni b/gn/tests.gni
index bbab21e..a40ce68 100644
--- a/gn/tests.gni
+++ b/gn/tests.gni
@@ -205,7 +205,6 @@
   "$_tests/ScaleToSidesTest.cpp",
   "$_tests/SerializationTest.cpp",
   "$_tests/SerialProcsTest.cpp",
-  "$_tests/SGTest.cpp",
   "$_tests/ShaderOpacityTest.cpp",
   "$_tests/ShaderTest.cpp",
   "$_tests/ShadowTest.cpp",
diff --git a/modules/sksg/BUILD.gn b/modules/sksg/BUILD.gn
new file mode 100644
index 0000000..2809cf1
--- /dev/null
+++ b/modules/sksg/BUILD.gn
@@ -0,0 +1,90 @@
+# Copyright 2018 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+declare_args() {
+  skia_enable_sksg = true
+}
+
+config("public_config") {
+  if (skia_enable_sksg) {
+    defines = [ "SK_HAS_SKSG" ]
+    include_dirs = [ "include" ]
+  }
+}
+
+source_set("sksg") {
+  if (skia_enable_sksg) {
+    public_configs = [ ":public_config" ]
+    sources = [
+      "src/SkSGClipEffect.cpp",
+      "src/SkSGColor.cpp",
+      "src/SkSGDraw.cpp",
+      "src/SkSGEffectNode.cpp",
+      "src/SkSGGeometryNode.cpp",
+      "src/SkSGGeometryTransform.cpp",
+      "src/SkSGGradient.cpp",
+      "src/SkSGGroup.cpp",
+      "src/SkSGImage.cpp",
+      "src/SkSGInvalidationController.cpp",
+      "src/SkSGMaskEffect.cpp",
+      "src/SkSGMerge.cpp",
+      "src/SkSGNode.cpp",
+      "src/SkSGOpacityEffect.cpp",
+      "src/SkSGPaintNode.cpp",
+      "src/SkSGPath.cpp",
+      "src/SkSGPlane.cpp",
+      "src/SkSGRect.cpp",
+      "src/SkSGRenderNode.cpp",
+      "src/SkSGRoundEffect.cpp",
+      "src/SkSGScene.cpp",
+      "src/SkSGText.cpp",
+      "src/SkSGTransform.cpp",
+      "src/SkSGTrimEffect.cpp",
+    ]
+    configs += [ "../../:skia_private" ]
+    deps = [
+      "../..:skia",
+    ]
+  }
+}
+
+source_set("tests") {
+  if (skia_enable_sksg) {
+    testonly = true
+
+    configs += [
+      "../..:skia_private",
+      "../..:tests_config",  # TODO: refactor to make this nicer
+    ]
+    sources = [
+      "tests/SGTest.cpp",
+    ]
+    deps = [
+      ":sksg",
+      "../..:gpu_tool_utils",  # TODO: refactor to make this nicer
+      "../..:skia",
+    ]
+  }
+}
+
+source_set("samples") {
+  if (skia_enable_sksg) {
+    testonly = true
+
+    configs += [
+      "../..:skia_private",
+      "../..:samples_config",  # TODO: refactor to make this nicer
+    ]
+    sources = [
+      "samples/SampleSVGPong.cpp",
+    ]
+    deps = [
+      ":sksg",
+      "../..:gm",  # TODO: refactor to make this nicer
+      "../..:skia",
+      "../..:views",  # TODO: refactor to make this nicer
+    ]
+  }
+}
diff --git a/experimental/sksg/effects/SkSGClipEffect.h b/modules/sksg/include/SkSGClipEffect.h
similarity index 100%
rename from experimental/sksg/effects/SkSGClipEffect.h
rename to modules/sksg/include/SkSGClipEffect.h
diff --git a/experimental/sksg/paint/SkSGColor.h b/modules/sksg/include/SkSGColor.h
similarity index 100%
rename from experimental/sksg/paint/SkSGColor.h
rename to modules/sksg/include/SkSGColor.h
diff --git a/experimental/sksg/SkSGDraw.h b/modules/sksg/include/SkSGDraw.h
similarity index 100%
rename from experimental/sksg/SkSGDraw.h
rename to modules/sksg/include/SkSGDraw.h
diff --git a/experimental/sksg/SkSGEffectNode.h b/modules/sksg/include/SkSGEffectNode.h
similarity index 100%
rename from experimental/sksg/SkSGEffectNode.h
rename to modules/sksg/include/SkSGEffectNode.h
diff --git a/experimental/sksg/SkSGGeometryNode.h b/modules/sksg/include/SkSGGeometryNode.h
similarity index 100%
rename from experimental/sksg/SkSGGeometryNode.h
rename to modules/sksg/include/SkSGGeometryNode.h
diff --git a/experimental/sksg/geometry/SkSGGeometryTransform.h b/modules/sksg/include/SkSGGeometryTransform.h
similarity index 100%
rename from experimental/sksg/geometry/SkSGGeometryTransform.h
rename to modules/sksg/include/SkSGGeometryTransform.h
diff --git a/experimental/sksg/paint/SkSGGradient.h b/modules/sksg/include/SkSGGradient.h
similarity index 100%
rename from experimental/sksg/paint/SkSGGradient.h
rename to modules/sksg/include/SkSGGradient.h
diff --git a/experimental/sksg/SkSGGroup.h b/modules/sksg/include/SkSGGroup.h
similarity index 100%
rename from experimental/sksg/SkSGGroup.h
rename to modules/sksg/include/SkSGGroup.h
diff --git a/experimental/sksg/SkSGImage.h b/modules/sksg/include/SkSGImage.h
similarity index 100%
rename from experimental/sksg/SkSGImage.h
rename to modules/sksg/include/SkSGImage.h
diff --git a/experimental/sksg/SkSGInvalidationController.h b/modules/sksg/include/SkSGInvalidationController.h
similarity index 100%
rename from experimental/sksg/SkSGInvalidationController.h
rename to modules/sksg/include/SkSGInvalidationController.h
diff --git a/experimental/sksg/effects/SkSGMaskEffect.h b/modules/sksg/include/SkSGMaskEffect.h
similarity index 100%
rename from experimental/sksg/effects/SkSGMaskEffect.h
rename to modules/sksg/include/SkSGMaskEffect.h
diff --git a/experimental/sksg/geometry/SkSGMerge.h b/modules/sksg/include/SkSGMerge.h
similarity index 100%
rename from experimental/sksg/geometry/SkSGMerge.h
rename to modules/sksg/include/SkSGMerge.h
diff --git a/experimental/sksg/SkSGNode.h b/modules/sksg/include/SkSGNode.h
similarity index 100%
rename from experimental/sksg/SkSGNode.h
rename to modules/sksg/include/SkSGNode.h
diff --git a/experimental/sksg/effects/SkSGOpacityEffect.h b/modules/sksg/include/SkSGOpacityEffect.h
similarity index 100%
rename from experimental/sksg/effects/SkSGOpacityEffect.h
rename to modules/sksg/include/SkSGOpacityEffect.h
diff --git a/experimental/sksg/SkSGPaintNode.h b/modules/sksg/include/SkSGPaintNode.h
similarity index 100%
rename from experimental/sksg/SkSGPaintNode.h
rename to modules/sksg/include/SkSGPaintNode.h
diff --git a/experimental/sksg/geometry/SkSGPath.h b/modules/sksg/include/SkSGPath.h
similarity index 100%
rename from experimental/sksg/geometry/SkSGPath.h
rename to modules/sksg/include/SkSGPath.h
diff --git a/experimental/sksg/geometry/SkSGPlane.h b/modules/sksg/include/SkSGPlane.h
similarity index 100%
rename from experimental/sksg/geometry/SkSGPlane.h
rename to modules/sksg/include/SkSGPlane.h
diff --git a/experimental/sksg/geometry/SkSGRect.h b/modules/sksg/include/SkSGRect.h
similarity index 100%
rename from experimental/sksg/geometry/SkSGRect.h
rename to modules/sksg/include/SkSGRect.h
diff --git a/experimental/sksg/SkSGRenderNode.h b/modules/sksg/include/SkSGRenderNode.h
similarity index 100%
rename from experimental/sksg/SkSGRenderNode.h
rename to modules/sksg/include/SkSGRenderNode.h
diff --git a/experimental/sksg/geometry/SkSGRoundEffect.h b/modules/sksg/include/SkSGRoundEffect.h
similarity index 100%
rename from experimental/sksg/geometry/SkSGRoundEffect.h
rename to modules/sksg/include/SkSGRoundEffect.h
diff --git a/experimental/sksg/SkSGScene.h b/modules/sksg/include/SkSGScene.h
similarity index 100%
rename from experimental/sksg/SkSGScene.h
rename to modules/sksg/include/SkSGScene.h
diff --git a/experimental/sksg/geometry/SkSGText.h b/modules/sksg/include/SkSGText.h
similarity index 100%
rename from experimental/sksg/geometry/SkSGText.h
rename to modules/sksg/include/SkSGText.h
diff --git a/experimental/sksg/effects/SkSGTransform.h b/modules/sksg/include/SkSGTransform.h
similarity index 100%
rename from experimental/sksg/effects/SkSGTransform.h
rename to modules/sksg/include/SkSGTransform.h
diff --git a/experimental/sksg/geometry/SkSGTrimEffect.h b/modules/sksg/include/SkSGTrimEffect.h
similarity index 100%
rename from experimental/sksg/geometry/SkSGTrimEffect.h
rename to modules/sksg/include/SkSGTrimEffect.h
diff --git a/samplecode/SampleSVGPong.cpp b/modules/sksg/samples/SampleSVGPong.cpp
similarity index 100%
rename from samplecode/SampleSVGPong.cpp
rename to modules/sksg/samples/SampleSVGPong.cpp
diff --git a/experimental/sksg/effects/SkSGClipEffect.cpp b/modules/sksg/src/SkSGClipEffect.cpp
similarity index 100%
rename from experimental/sksg/effects/SkSGClipEffect.cpp
rename to modules/sksg/src/SkSGClipEffect.cpp
diff --git a/experimental/sksg/paint/SkSGColor.cpp b/modules/sksg/src/SkSGColor.cpp
similarity index 100%
rename from experimental/sksg/paint/SkSGColor.cpp
rename to modules/sksg/src/SkSGColor.cpp
diff --git a/experimental/sksg/SkSGDraw.cpp b/modules/sksg/src/SkSGDraw.cpp
similarity index 100%
rename from experimental/sksg/SkSGDraw.cpp
rename to modules/sksg/src/SkSGDraw.cpp
diff --git a/experimental/sksg/SkSGEffectNode.cpp b/modules/sksg/src/SkSGEffectNode.cpp
similarity index 100%
rename from experimental/sksg/SkSGEffectNode.cpp
rename to modules/sksg/src/SkSGEffectNode.cpp
diff --git a/experimental/sksg/SkSGGeometryNode.cpp b/modules/sksg/src/SkSGGeometryNode.cpp
similarity index 100%
rename from experimental/sksg/SkSGGeometryNode.cpp
rename to modules/sksg/src/SkSGGeometryNode.cpp
diff --git a/experimental/sksg/geometry/SkSGGeometryTransform.cpp b/modules/sksg/src/SkSGGeometryTransform.cpp
similarity index 100%
rename from experimental/sksg/geometry/SkSGGeometryTransform.cpp
rename to modules/sksg/src/SkSGGeometryTransform.cpp
diff --git a/experimental/sksg/paint/SkSGGradient.cpp b/modules/sksg/src/SkSGGradient.cpp
similarity index 100%
rename from experimental/sksg/paint/SkSGGradient.cpp
rename to modules/sksg/src/SkSGGradient.cpp
diff --git a/experimental/sksg/SkSGGroup.cpp b/modules/sksg/src/SkSGGroup.cpp
similarity index 100%
rename from experimental/sksg/SkSGGroup.cpp
rename to modules/sksg/src/SkSGGroup.cpp
diff --git a/experimental/sksg/SkSGImage.cpp b/modules/sksg/src/SkSGImage.cpp
similarity index 100%
rename from experimental/sksg/SkSGImage.cpp
rename to modules/sksg/src/SkSGImage.cpp
diff --git a/experimental/sksg/SkSGInvalidationController.cpp b/modules/sksg/src/SkSGInvalidationController.cpp
similarity index 100%
rename from experimental/sksg/SkSGInvalidationController.cpp
rename to modules/sksg/src/SkSGInvalidationController.cpp
diff --git a/experimental/sksg/effects/SkSGMaskEffect.cpp b/modules/sksg/src/SkSGMaskEffect.cpp
similarity index 100%
rename from experimental/sksg/effects/SkSGMaskEffect.cpp
rename to modules/sksg/src/SkSGMaskEffect.cpp
diff --git a/experimental/sksg/geometry/SkSGMerge.cpp b/modules/sksg/src/SkSGMerge.cpp
similarity index 100%
rename from experimental/sksg/geometry/SkSGMerge.cpp
rename to modules/sksg/src/SkSGMerge.cpp
diff --git a/experimental/sksg/SkSGNode.cpp b/modules/sksg/src/SkSGNode.cpp
similarity index 100%
rename from experimental/sksg/SkSGNode.cpp
rename to modules/sksg/src/SkSGNode.cpp
diff --git a/experimental/sksg/effects/SkSGOpacityEffect.cpp b/modules/sksg/src/SkSGOpacityEffect.cpp
similarity index 100%
rename from experimental/sksg/effects/SkSGOpacityEffect.cpp
rename to modules/sksg/src/SkSGOpacityEffect.cpp
diff --git a/experimental/sksg/SkSGPaintNode.cpp b/modules/sksg/src/SkSGPaintNode.cpp
similarity index 100%
rename from experimental/sksg/SkSGPaintNode.cpp
rename to modules/sksg/src/SkSGPaintNode.cpp
diff --git a/experimental/sksg/geometry/SkSGPath.cpp b/modules/sksg/src/SkSGPath.cpp
similarity index 100%
rename from experimental/sksg/geometry/SkSGPath.cpp
rename to modules/sksg/src/SkSGPath.cpp
diff --git a/experimental/sksg/geometry/SkSGPlane.cpp b/modules/sksg/src/SkSGPlane.cpp
similarity index 100%
rename from experimental/sksg/geometry/SkSGPlane.cpp
rename to modules/sksg/src/SkSGPlane.cpp
diff --git a/experimental/sksg/geometry/SkSGRect.cpp b/modules/sksg/src/SkSGRect.cpp
similarity index 100%
rename from experimental/sksg/geometry/SkSGRect.cpp
rename to modules/sksg/src/SkSGRect.cpp
diff --git a/experimental/sksg/SkSGRenderNode.cpp b/modules/sksg/src/SkSGRenderNode.cpp
similarity index 100%
rename from experimental/sksg/SkSGRenderNode.cpp
rename to modules/sksg/src/SkSGRenderNode.cpp
diff --git a/experimental/sksg/geometry/SkSGRoundEffect.cpp b/modules/sksg/src/SkSGRoundEffect.cpp
similarity index 100%
rename from experimental/sksg/geometry/SkSGRoundEffect.cpp
rename to modules/sksg/src/SkSGRoundEffect.cpp
diff --git a/experimental/sksg/SkSGScene.cpp b/modules/sksg/src/SkSGScene.cpp
similarity index 100%
rename from experimental/sksg/SkSGScene.cpp
rename to modules/sksg/src/SkSGScene.cpp
diff --git a/experimental/sksg/geometry/SkSGText.cpp b/modules/sksg/src/SkSGText.cpp
similarity index 100%
rename from experimental/sksg/geometry/SkSGText.cpp
rename to modules/sksg/src/SkSGText.cpp
diff --git a/experimental/sksg/effects/SkSGTransform.cpp b/modules/sksg/src/SkSGTransform.cpp
similarity index 100%
rename from experimental/sksg/effects/SkSGTransform.cpp
rename to modules/sksg/src/SkSGTransform.cpp
diff --git a/experimental/sksg/geometry/SkSGTrimEffect.cpp b/modules/sksg/src/SkSGTrimEffect.cpp
similarity index 100%
rename from experimental/sksg/geometry/SkSGTrimEffect.cpp
rename to modules/sksg/src/SkSGTrimEffect.cpp
diff --git a/tests/SGTest.cpp b/modules/sksg/tests/SGTest.cpp
similarity index 100%
rename from tests/SGTest.cpp
rename to modules/sksg/tests/SGTest.cpp
diff --git a/samplecode/SampleSGInval.cpp b/samplecode/SampleSGInval.cpp
deleted file mode 100644
index 44cdcb9..0000000
--- a/samplecode/SampleSGInval.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2017 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "SampleCode.h"
-#include "SkCanvas.h"
-#include "SkSGColor.h"
-#include "SkSGDraw.h"
-#include "SkSGGroup.h"
-#include "SkSGInvalidationController.h"
-#include "SkSGRect.h"
-#include "SkSGTransform.h"
-#include "SkAnimTimer.h"
-
-#include <cmath>
-
-class SGInvalView final : public SampleView {
-public:
-    SGInvalView() {}
-
-protected:
-    void onOnceBeforeDraw() override {
-        fRect1 = sksg::Rect::Make(SkRect::MakeLTRB(100, 100, 100, 100));
-        fRect2 = sksg::Rect::Make(SkRect::MakeLTRB(300, 200, 300, 200));
-        fColor1 = sksg::Color::Make(0);
-        fColor2 = sksg::Color::Make(0);
-
-        fRoot = sksg::Group::Make();
-        fRoot->addChild(sksg::Draw::Make(fRect1, fColor1));
-        fRoot->addChild(sksg::Transform::Make(sksg::Draw::Make(fRect2, fColor2),
-                                              SkMatrix::MakeScale(1.5f, 1.5f)));
-    }
-
-    bool onQuery(SkEvent* evt) override {
-        if (SampleCode::TitleQ(*evt)) {
-            SampleCode::TitleR(evt, "SGInval");
-            return true;
-        }
-
-        return this->INHERITED::onQuery(evt);
-    }
-
-    void onDrawContent(SkCanvas* canvas) override {
-        sksg::InvalidationController ic;
-        fRoot->revalidate(&ic, SkMatrix::I());
-
-        // TODO: clip/cull
-        fRoot->render(canvas);
-
-        SkPaint p;
-        p.setColor(0xffff0000);
-        p.setStyle(SkPaint::kStroke_Style);
-        p.setAntiAlias(true);
-        p.setStrokeWidth(0);
-
-        for (const auto& r : ic) {
-            canvas->drawRect(r, p);
-        }
-    }
-
-    bool onAnimate(const SkAnimTimer& timer) override {
-        if (!fRoot) {
-            return true;
-        }
-
-        static constexpr SkScalar kSize = 50;
-        static constexpr SkScalar kRate = 1.0f / 500;
-        const auto t = timer.msec() * kRate;
-
-        fRect1->setR(fRect1->getL() + kSize * (1 + std::sin(t)));
-        fRect1->setB(fRect1->getT() + kSize * (1 + std::cos(t)));
-        fRect2->setR(fRect2->getL() + kSize * (1 + std::cos(SK_ScalarPI / 2 + t)));
-        fRect2->setB(fRect2->getT() + kSize * (1 + std::sin(SK_ScalarPI / 2 + t)));
-
-        fColor1->setColor(SkColorSetARGB(128 * (1 + std::sin(t)), 0, 0x80, 0));
-        fColor2->setColor(SkColorSetARGB(128 * (1 + std::cos(t)), 0, 0, 0x80));
-        return true;
-    }
-
-private:
-    typedef SampleView INHERITED;
-
-    sk_sp<sksg::Rect>  fRect1,
-                       fRect2;
-    sk_sp<sksg::Color> fColor1,
-                       fColor2;
-    sk_sp<sksg::Group> fRoot;
-};
-
-static SkView* SGInvalFactory() { return new SGInvalView; }
-static SkViewRegister reg(SGInvalFactory);
diff --git a/tools/viewer/SlideDir.cpp b/tools/viewer/SlideDir.cpp
index 1da6df4..41bff87 100644
--- a/tools/viewer/SlideDir.cpp
+++ b/tools/viewer/SlideDir.cpp
@@ -7,6 +7,8 @@
 
 #include "SlideDir.h"
 
+#ifdef SK_HAS_SKSG
+
 #include "SkAnimTimer.h"
 #include "SkCanvas.h"
 #include "SkCubicMap.h"
@@ -418,3 +420,5 @@
 
     return idx < fRecs.count() ? &fRecs[idx] : nullptr;
 }
+
+#endif // SK_HAS_SKSG
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index 85a7298..2357a18 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -37,11 +37,14 @@
 #include "SkTaskGroup.h"
 #include "SkTestFontMgr.h"
 #include "SkThreadedBMPDevice.h"
-#include "SlideDir.h"
 #include "SvgSlide.h"
 #include "ccpr/GrCoverageCountingPathRenderer.h"
 #include "imgui.h"
 
+#if defined(SK_HAS_SKSG)
+    #include "SlideDir.h"
+#endif
+
 #if defined(SK_ENABLE_SKOTTIE)
     #include "SkottieSlide.h"
 #endif
@@ -646,13 +649,14 @@
                     addSlide(name, SkOSPath::Join(flag.c_str(), name.c_str()), info.fFactory);
                 }
             }
-
+#if defined(SK_HAS_SKSG)
             if (!dirSlides.empty()) {
                 fSlides.push_back(
                     sk_make_sp<SlideDir>(SkStringPrintf("%s[%s]", info.fDirName, flag.c_str()),
                                          std::move(dirSlides)));
                 dirSlides.reset();
             }
+#endif
         }
     }
 }