diff --git a/BUILD.bazel b/BUILD.bazel index 08b8ca222493..b1732f47295d 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -62,6 +62,7 @@ skia_cc_library( local_defines = DEFAULT_LOCAL_DEFINES, visibility = [ "//dm:__subpackages__", + "//gm:__subpackages__", "//modules:__subpackages__", "//tests:__subpackages__", "//tools:__subpackages__", diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index 23e3f7b682ab..f141107382ec 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -372,6 +372,7 @@ load("//bazel:deps.bzl", "git_repos_from_deps") # @freetype - //bazel/external/freetype:BUILD.bazel # @harfbuzz - //bazel/external/harfbuzz:BUILD.bazel # @icu - //bazel/external/icu:BUILD.bazel +# @imgui - //bazel/external/imgui:BUILD.bazel # @libavif - //bazel/external/libavif:BUILD.bazel # @libgav1 - //bazel/external/libgav1:BUILD.bazel # @libjpeg_turbo - //bazel/external/libjpeg_turbo:BUILD.bazel diff --git a/bazel/deps.bzl b/bazel/deps.bzl index 1ef645e03901..30e114f6976c 100644 --- a/bazel/deps.bzl +++ b/bazel/deps.bzl @@ -77,6 +77,13 @@ def git_repos_from_deps(ws = "@"): remote = "https://chromium.googlesource.com/chromium/deps/icu.git", ) + new_git_repository( + name = "imgui", + build_file = ws + "//bazel/external/imgui:BUILD.bazel", + commit = "55d35d8387c15bf0cfd71861df67af8cfbda7456", + remote = "https://skia.googlesource.com/external/github.com/ocornut/imgui.git", + ) + new_git_repository( name = "libavif", build_file = ws + "//bazel/external/libavif:BUILD.bazel", diff --git a/bazel/deps_parser/deps_parser.go b/bazel/deps_parser/deps_parser.go index 85fca8cabd0b..b22309f98c05 100644 --- a/bazel/deps_parser/deps_parser.go +++ b/bazel/deps_parser/deps_parser.go @@ -35,6 +35,7 @@ var deps = map[string]depConfig{ "freetype": {needsBazelFile: true}, "harfbuzz": {needsBazelFile: true}, "icu": {needsBazelFile: true}, + "imgui": {needsBazelFile: true}, "libavif": {needsBazelFile: true}, "libgav1": {needsBazelFile: true}, "libjpeg-turbo": {bazelNameOverride: "libjpeg_turbo", needsBazelFile: true}, diff --git a/bazel/external/imgui/BUILD.bazel b/bazel/external/imgui/BUILD.bazel new file mode 100644 index 000000000000..0d6158011c5c --- /dev/null +++ b/bazel/external/imgui/BUILD.bazel @@ -0,0 +1,24 @@ +# This file will be copied into //third_party/externals/imgui via the new_git_repository +# rule in //bazel/deps.bzl, so all files should be relative to that path. + +cc_library( + name = "imgui", + srcs = [ + "imconfig.h", + "imgui.cpp", + "imgui.h", + "imgui_demo.cpp", + "imgui_draw.cpp", + "imgui_internal.h", + "imgui_tables.cpp", + "imgui_widgets.cpp", + "imstb_rectpack.h", + "imstb_textedit.h", + "imstb_truetype.h", + "misc/cpp/imgui_stdlib.cpp", + "misc/cpp/imgui_stdlib.h", + ], + hdrs = ["imgui.h"], + defines = ["IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS"], + visibility = ["//visibility:public"], +) diff --git a/gm/BUILD.bazel b/gm/BUILD.bazel new file mode 100644 index 000000000000..d78afc1eae7d --- /dev/null +++ b/gm/BUILD.bazel @@ -0,0 +1,28 @@ +load("//bazel:skia_rules.bzl", "exports_files_legacy", "skia_cc_library") + +licenses(["notice"]) + +exports_files_legacy() + +filegroup( + name = "gm_subset", + srcs = ["bitmaprect.cpp"], + visibility = ["//tools/viewer:__pkg__"], +) + +skia_cc_library( + name = "gm", + testonly = True, + srcs = [ + "gm.cpp", + "verifiers/gmverifier.cpp", + "verifiers/gmverifier.h", + ], + hdrs = ["gm.h"], + visibility = ["//tools/viewer:__pkg__"], + deps = [ + "//:skia_internal", + "//tools:registry", + "//tools:tool_utils", + ], +) diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp index bec2630a4833..0db8234857cd 100644 --- a/gm/bitmaprect.cpp +++ b/gm/bitmaprect.cpp @@ -10,10 +10,12 @@ #include "include/core/SkBlendMode.h" #include "include/core/SkCanvas.h" #include "include/core/SkColor.h" +#include "include/core/SkImage.h" #include "include/core/SkPaint.h" #include "include/core/SkPoint.h" #include "include/core/SkRect.h" -#include "include/core/SkShader.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" #include "include/core/SkSize.h" #include "include/core/SkString.h" #include "include/core/SkSurface.h" @@ -22,6 +24,9 @@ #include "include/effects/SkGradientShader.h" #include "tools/ToolUtils.h" +#include +#include + static sk_sp make_image(SkCanvas* destCanvas) { auto surf = SkSurface::MakeRasterN32Premul(64, 64); auto tmpCanvas = surf->getCanvas(); diff --git a/gm/fillrect_gradient.cpp b/gm/fillrect_gradient.cpp index 40d148f3eaa9..cd22ab72287e 100644 --- a/gm/fillrect_gradient.cpp +++ b/gm/fillrect_gradient.cpp @@ -24,6 +24,8 @@ #include "include/core/SkTileMode.h" #include "include/effects/SkGradientShader.h" +#include + const int kCellSize = 50; const int kNumColumns = 2; const int kNumRows = 9; diff --git a/gm/gm.cpp b/gm/gm.cpp index cc139e5bae51..fe7559908368 100644 --- a/gm/gm.cpp +++ b/gm/gm.cpp @@ -6,7 +6,8 @@ */ #include "gm/gm.h" -#include "gm/verifiers/gmverifier.h" + +#include "gm/verifiers/gmverifier.h" // IWYU pragma: keep #include "include/core/SkBitmap.h" #include "include/core/SkBlendMode.h" #include "include/core/SkCanvas.h" @@ -15,15 +16,16 @@ #include "include/core/SkMatrix.h" #include "include/core/SkPaint.h" #include "include/core/SkRect.h" -#include "include/core/SkShader.h" +#include "include/core/SkSamplingOptions.h" +#include "include/core/SkShader.h" // IWYU pragma: keep #include "include/core/SkTileMode.h" -#include "include/core/SkTypeface.h" #include "include/gpu/GrRecordingContext.h" -#include "src/core/SkCanvasPriv.h" #include "src/core/SkTraceEvent.h" #include "tools/ToolUtils.h" -#include +#include +#include +#include using namespace skiagm; @@ -186,6 +188,10 @@ void GM::drawSizeBounds(SkCanvas* canvas, SkColor color) { // need to explicitly declare this, or we get some weird infinite loop llist template GMRegistry* GMRegistry::gHead; +std::unique_ptr GpuGM::getVerifiers() const { + return nullptr; +} + DrawResult GpuGM::onDraw(GrRecordingContext* rContext, SkCanvas* canvas, SkString* errorMsg) { this->onDraw(rContext, canvas); return DrawResult::kOk; diff --git a/gm/gm.h b/gm/gm.h index 7349cef9a6af..d7b28af4dae5 100644 --- a/gm/gm.h +++ b/gm/gm.h @@ -8,7 +8,6 @@ #ifndef skiagm_DEFINED #define skiagm_DEFINED -#include "gm/verifiers/gmverifier.h" #include "include/core/SkColor.h" #include "include/core/SkScalar.h" #include "include/core/SkSize.h" @@ -19,12 +18,13 @@ #include -class GrDirectContext; class GrRecordingContext; class SkCanvas; class SkMetaData; struct GrContextOptions; +namespace skiagm { namespace verifiers { class VerifierList; } } + #define DEF_GM(CODE) \ static skiagm::GMRegistry SK_MACRO_APPEND_COUNTER(REG_)( \ []() { return std::unique_ptr([]() { CODE; }()); }); @@ -200,7 +200,7 @@ namespace skiagm { // TODO(tdenniston): Currently GpuGMs don't have verifiers (because they do not render on // CPU), but we may want to be able to verify the output images standalone, without // requiring a gold image for comparison. - std::unique_ptr getVerifiers() const override { return nullptr; } + std::unique_ptr getVerifiers() const override; private: using GM::onDraw; diff --git a/gm/hardstop_gradients_many.cpp b/gm/hardstop_gradients_many.cpp index 172303b32e2b..c8c661433e9c 100644 --- a/gm/hardstop_gradients_many.cpp +++ b/gm/hardstop_gradients_many.cpp @@ -24,6 +24,8 @@ #include "include/core/SkTileMode.h" #include "include/effects/SkGradientShader.h" +#include + const int kWidth = 1000; const int kHeight = 2000; const int kNumRows = 100; diff --git a/gm/verifiers/gmverifier.cpp b/gm/verifiers/gmverifier.cpp index 68708fc8b94f..18c78bae9321 100644 --- a/gm/verifiers/gmverifier.cpp +++ b/gm/verifiers/gmverifier.cpp @@ -5,15 +5,20 @@ * found in the LICENSE file. */ -#include "gm/gm.h" #include "gm/verifiers/gmverifier.h" + +#include "gm/gm.h" +#include "include/core/SkAlphaType.h" #include "include/core/SkBitmap.h" #include "include/core/SkCanvas.h" #include "include/core/SkColorSpace.h" -#include "include/core/SkSurface.h" -#include "include/effects/SkImageFilters.h" -#include "include/encode/SkPngEncoder.h" -#include "src/utils/SkOSPath.h" +#include "include/core/SkColorType.h" +#include "include/core/SkImage.h" // IWYU pragma: keep +#include "include/core/SkImageInfo.h" +#include "include/core/SkSize.h" +#include "include/private/base/SkAssert.h" + +#include /** Checks the given VerifierResult. If it is not ok, returns it. */ #define RETURN_NOT_OK(res) if (!(res).ok()) return (res) diff --git a/gm/verifiers/gmverifier.h b/gm/verifiers/gmverifier.h index beca79524128..43121db9cf64 100644 --- a/gm/verifiers/gmverifier.h +++ b/gm/verifiers/gmverifier.h @@ -8,14 +8,14 @@ #ifndef gmverifier_DEFINED #define gmverifier_DEFINED -#include "include/core/SkColor.h" -#include "include/core/SkRect.h" #include "include/core/SkString.h" +#include #include class SkBitmap; class SkColorInfo; +struct SkIRect; namespace skiagm { diff --git a/src/utils/BUILD.bazel b/src/utils/BUILD.bazel index e27f608df221..6c6dc24adfbc 100644 --- a/src/utils/BUILD.bazel +++ b/src/utils/BUILD.bazel @@ -91,6 +91,7 @@ skia_filegroup( selects.config_setting_group( name = "needs_json", match_any = [ + "//src/gpu:enable_gpu_test_utils_true", "//src/sksl:enable_sksl_tracing_true", ], ) diff --git a/toolchain/linux_trampolines/IWYU_mapping.imp b/toolchain/linux_trampolines/IWYU_mapping.imp index eca49d672db1..77545473c256 100644 --- a/toolchain/linux_trampolines/IWYU_mapping.imp +++ b/toolchain/linux_trampolines/IWYU_mapping.imp @@ -9,6 +9,7 @@ { include: ["<__algorithm/fill.h>", "private", "", "public"] }, { include: ["<__algorithm/fill_n.h>", "private", "", "public"] }, { include: ["<__algorithm/find.h>", "private", "", "public"] }, + { include: ["<__algorithm/find_if.h>", "private", "", "public"] }, { include: ["<__algorithm/is_sorted.h>", "private", "", "public"] }, { include: ["<__algorithm/lower_bound.h>", "private", "", "public"] }, { include: ["<__algorithm/max.h>", "private", "", "public"] }, diff --git a/toolchain/linux_trampolines/clang_trampoline_linux.sh b/toolchain/linux_trampolines/clang_trampoline_linux.sh index d1a3b88a0e8c..63b4582e733f 100755 --- a/toolchain/linux_trampolines/clang_trampoline_linux.sh +++ b/toolchain/linux_trampolines/clang_trampoline_linux.sh @@ -17,6 +17,7 @@ if [[ "$@" != *DSKIA_ENFORCE_IWYU* || "$@" == *use-ld* ]]; then fi supported_files_or_dirs=( + "gm/" "include/private/base/" "modules/skunicode/" "src/base/" @@ -32,6 +33,7 @@ supported_files_or_dirs=( "src/utils/" "tests/" "tools/debugger/" + "tools/viewer/" "src/core/SkBitmap.cpp" "src/core/SkBitmapCache.cpp" "src/core/SkCachedData.cpp" diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel index c07395e123e4..2b03686b614e 100644 --- a/tools/BUILD.bazel +++ b/tools/BUILD.bazel @@ -12,14 +12,15 @@ skia_cc_library( "Resources.cpp", "ToolUtils.cpp", "ResourceFactory.h", - "Resources.h", "//tools/flags", # TODO(kjlubick, bungeman): We should split out the font stuff into its own set of files "//tools/fonts:test_font_manager_srcs", - "SkMetaData.h", "SkMetaData.cpp", ], hdrs = [ + "DecodeFile.h", + "Resources.h", + "SkMetaData.h", "ToolUtils.h", ], textual_hdrs = [ @@ -34,7 +35,11 @@ skia_cc_library( skia_cc_library( name = "registry", hdrs = ["Registry.h"], - visibility = ["//tests:__subpackages__"], + visibility = [ + "//gm:__pkg__", + "//tests:__subpackages__", + "//tools/viewer:__pkg__", + ], deps = ["//:skia_internal"], ) @@ -73,11 +78,25 @@ skia_cc_library( deps = ["//:skia_internal"], ) +skia_cc_library( + name = "mskp_player", + srcs = ["MSKPPlayer.cpp"], + hdrs = ["MSKPPlayer.h"], + visibility = ["//tools/viewer:__pkg__"], + deps = [ + ":sk_sharing_proc", + "//:skia_internal", + ], +) + skia_cc_library( name = "runtime_blend_utils", srcs = ["RuntimeBlendUtils.cpp"], hdrs = ["RuntimeBlendUtils.h"], - visibility = ["//tests:__pkg__"], + visibility = [ + "//tests:__pkg__", + "//tools/viewer:__pkg__", + ], deps = ["//:skia_internal"], ) diff --git a/tools/flags/BUILD.bazel b/tools/flags/BUILD.bazel index 2a0185caca38..a772aaed6c56 100644 --- a/tools/flags/BUILD.bazel +++ b/tools/flags/BUILD.bazel @@ -17,3 +17,16 @@ skia_filegroup( "//tools:__subpackages__", ], ) + +skia_filegroup( + name = "common_flags", + testonly = True, + srcs = [ + "CommonFlags.h", + "CommonFlagsFontMgr.cpp", + "CommonFlagsGpu.cpp", + ], + visibility = [ + "//tools:__subpackages__", + ], +) diff --git a/tools/gpu/BUILD.bazel b/tools/gpu/BUILD.bazel index ba8297255da3..756e9c104152 100644 --- a/tools/gpu/BUILD.bazel +++ b/tools/gpu/BUILD.bazel @@ -57,6 +57,7 @@ skia_cc_library( visibility = [ "//modules/skottie:__pkg__", "//tests:__pkg__", + "//tools/viewer:__pkg__", ], deps = ["//:skia_internal"] + select_multi({ "//src/gpu:gl_backend": ["//tools/gpu/gl:deps"], diff --git a/tools/gpu/GrTest.cpp b/tools/gpu/GrTest.cpp index cd4dc0df54c4..368f40a8512d 100644 --- a/tools/gpu/GrTest.cpp +++ b/tools/gpu/GrTest.cpp @@ -11,6 +11,7 @@ #include "include/gpu/GrRecordingContext.h" #include "include/private/base/SkTo.h" #include "src/base/SkMathPriv.h" +#include "src/base/SkRandom.h" #include "src/gpu/ganesh/GrClip.h" #include "src/gpu/ganesh/GrDirectContextPriv.h" #include "src/gpu/ganesh/GrDrawOpAtlas.h" diff --git a/tools/gpu/gl/GLTestContext.cpp b/tools/gpu/gl/GLTestContext.cpp index 951e3443b80b..757dae6870b2 100644 --- a/tools/gpu/gl/GLTestContext.cpp +++ b/tools/gpu/gl/GLTestContext.cpp @@ -213,7 +213,7 @@ void GLTestContext::teardown() { void GLTestContext::testAbandon() { INHERITED::testAbandon(); -#ifdef SK_GL +#if defined(SK_GL) && GR_TEST_UTILS if (fGLInterface) { fGLInterface->abandon(); fOriginalGLInterface->abandon(); diff --git a/tools/sk_app/BUILD.bazel b/tools/sk_app/BUILD.bazel index cb3e7ad20d7c..4189c9fbf6c6 100644 --- a/tools/sk_app/BUILD.bazel +++ b/tools/sk_app/BUILD.bazel @@ -12,6 +12,7 @@ skia_cc_library( "Window.cpp", "WindowContext.cpp", "RasterWindowContext.h", + "CommandSet.cpp", ] + select_multi( { "//src/gpu:dawn_backend": [ @@ -34,6 +35,7 @@ skia_cc_library( }), hdrs = [ "Application.h", + "CommandSet.h", "DisplayParams.h", "Window.h", "WindowContext.h", diff --git a/tools/trace/BUILD.bazel b/tools/trace/BUILD.bazel new file mode 100644 index 000000000000..ad7c9b354235 --- /dev/null +++ b/tools/trace/BUILD.bazel @@ -0,0 +1,19 @@ +load("//bazel:skia_rules.bzl", "exports_files_legacy") + +licenses(["notice"]) + +exports_files_legacy() + +filegroup( + name = "trace", + testonly = True, + srcs = [ + "ChromeTracingTracer.cpp", + "ChromeTracingTracer.h", + "EventTracingPriv.cpp", + "EventTracingPriv.h", + "SkDebugfTracer.cpp", + "SkDebugfTracer.h", + ], + visibility = ["//tools/viewer:__pkg__"], +) diff --git a/tools/viewer/BUILD.bazel b/tools/viewer/BUILD.bazel new file mode 100644 index 000000000000..42f6ebcfe349 --- /dev/null +++ b/tools/viewer/BUILD.bazel @@ -0,0 +1,74 @@ +load("//bazel:skia_rules.bzl", "exports_files_legacy") +load("//bazel:cc_binary_with_flags.bzl", "cc_binary_with_flags") + +licenses(["notice"]) + +exports_files_legacy() + +cc_binary_with_flags( + name = "viewer", + testonly = True, + srcs = [ + "AnimTimer.h", + "BisectSlide.cpp", + "BisectSlide.h", + "GMSlide.cpp", + "GMSlide.h", + "ImGuiLayer.cpp", + "ImGuiLayer.h", + "ImageSlide.cpp", + "ImageSlide.h", + "MSKPSlide.cpp", + "MSKPSlide.h", + "SKPSlide.cpp", + "SKPSlide.h", + "SkSLDebuggerSlide.cpp", + "SkSLDebuggerSlide.h", + "SkSLSlide.cpp", + "SkSLSlide.h", + "Slide.h", + "SlideDir.cpp", + "SlideDir.h", + "StatsLayer.cpp", + "StatsLayer.h", + "SvgSlide.cpp", + "SvgSlide.h", + "TouchGesture.cpp", + "TouchGesture.h", + "Viewer.cpp", + "Viewer.h", + "//gm:gm_subset", + "//tools/flags", + "//tools/flags:common_flags", + "//tools/fonts:test_font_manager_srcs", + "//tools/trace", + ], + set_flags = { + # Use the GL backend with the normal GL standard (as opposed to WebGL or GLES) + "gpu_backend": [ + "gl_backend", + ], + "with_gl_standard": [ + "gl_standard", + ], + "fontmgr_factory": [ + "custom_directory_fontmgr_factory", + ], + "enable_gpu_test_utils": ["True"], + "enable_svg_canvas": ["True"], + "enable_sksl_tracing": ["True"], + }, + deps = [ + "//:skia_internal", + "//gm", + "//modules/sksg", + "//tools:mskp_player", + "//tools:registry", + "//tools:runtime_blend_utils", + "//tools:tool_utils", + "//tools/gpu:utils", + "//tools/sk_app", + "//tools/skui", + "@imgui", + ], +) diff --git a/tools/viewer/BisectSlide.cpp b/tools/viewer/BisectSlide.cpp index 3cc2629aab19..88d1c26292c7 100644 --- a/tools/viewer/BisectSlide.cpp +++ b/tools/viewer/BisectSlide.cpp @@ -7,10 +7,14 @@ #include "tools/viewer/BisectSlide.h" +#include "include/core/SkCanvas.h" #include "include/core/SkStream.h" +#include "include/private/base/SkDebug.h" #include "src/utils/SkOSPath.h" #include "tools/ToolUtils.h" +#include +#include #include sk_sp BisectSlide::Create(const char filepath[]) { diff --git a/tools/viewer/BisectSlide.h b/tools/viewer/BisectSlide.h index b9438a38b6e2..10a72ab2a75f 100644 --- a/tools/viewer/BisectSlide.h +++ b/tools/viewer/BisectSlide.h @@ -8,12 +8,21 @@ #ifndef BisectSlide_DEFINED #define BisectSlide_DEFINED -#include "include/core/SkCanvas.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkPaint.h" #include "include/core/SkPath.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/core/SkString.h" +#include "include/core/SkTypes.h" #include "include/private/base/SkTArray.h" #include "tools/viewer/Slide.h" #include +#include + +class SkCanvas; /** * This is a simple utility designed to extract the paths from an SKP file and then isolate a single diff --git a/tools/viewer/ClickHandlerSlide.h b/tools/viewer/ClickHandlerSlide.h index 4e1638ef64b6..dfca49ebaff7 100644 --- a/tools/viewer/ClickHandlerSlide.h +++ b/tools/viewer/ClickHandlerSlide.h @@ -11,6 +11,10 @@ #include "tools/SkMetaData.h" #include "tools/viewer/Slide.h" +#include "include/core/SkPoint.h" + +#include + /** * Provides a higher level abstraction for click handling than the Slide base class. A Click object * is is used to track the state of the mouse over time. diff --git a/tools/viewer/GMSlide.cpp b/tools/viewer/GMSlide.cpp index c97dab953517..c98d43315170 100644 --- a/tools/viewer/GMSlide.cpp +++ b/tools/viewer/GMSlide.cpp @@ -11,11 +11,14 @@ * found in the LICENSE file. */ -#include "include/core/SkCanvas.h" -#include "include/gpu/GrDirectContext.h" -#include "include/gpu/GrRecordingContext.h" #include "tools/viewer/GMSlide.h" +#include "include/core/SkString.h" +#include + +class SkCanvas; +class SkMetaData; + GMSlide::GMSlide(std::unique_ptr gm) : fGM(std::move(gm)) { fGM->setMode(skiagm::GM::kSample_Mode); diff --git a/tools/viewer/GMSlide.h b/tools/viewer/GMSlide.h index 5fb884b3807b..d230f1008475 100644 --- a/tools/viewer/GMSlide.h +++ b/tools/viewer/GMSlide.h @@ -9,8 +9,15 @@ #define GMSlide_DEFINED #include "gm/gm.h" + +#include "include/core/SkSize.h" +#include "include/core/SkTypes.h" #include "tools/viewer/Slide.h" +#include +class SkCanvas; +class SkMetaData; + class GMSlide : public Slide { public: GMSlide(std::unique_ptr gm); diff --git a/tools/viewer/ImGuiLayer.cpp b/tools/viewer/ImGuiLayer.cpp index 14eccbd52120..61c32b1a2625 100644 --- a/tools/viewer/ImGuiLayer.cpp +++ b/tools/viewer/ImGuiLayer.cpp @@ -7,19 +7,26 @@ #include "tools/viewer/ImGuiLayer.h" +#include "include/core/SkBlendMode.h" #include "include/core/SkCanvas.h" +#include "include/core/SkColor.h" #include "include/core/SkImage.h" +#include "include/core/SkImageInfo.h" #include "include/core/SkPixmap.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" #include "include/core/SkShader.h" #include "include/core/SkSurface.h" #include "include/core/SkSwizzle.h" #include "include/core/SkTime.h" #include "include/core/SkVertices.h" +#include "include/private/base/SkTDArray.h" +#include "tools/sk_app/DisplayParams.h" +#include "tools/skui/InputState.h" +#include "tools/skui/Key.h" -#include "imgui.h" - -#include -#include +#include using namespace sk_app; diff --git a/tools/viewer/ImGuiLayer.h b/tools/viewer/ImGuiLayer.h index 1f35364e1c6e..bc2c73e9d910 100644 --- a/tools/viewer/ImGuiLayer.h +++ b/tools/viewer/ImGuiLayer.h @@ -8,14 +8,30 @@ #ifndef ImGuiLayer_DEFINED #define ImGuiLayer_DEFINED +#include "include/core/SkMatrix.h" #include "include/core/SkPaint.h" +#include "include/core/SkPoint.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" #include "include/private/base/SkTArray.h" #include "include/private/base/SkTPin.h" #include "include/private/base/SkTemplates.h" #include "tools/sk_app/Window.h" +#include +#include + #include "imgui.h" +class SkCanvas; +class SkSurface; + +namespace skui { +enum class InputState; +enum class Key; +enum class ModifierKey; +} // namespace skui + namespace ImGui { // Helper object for drawing in a widget region, with draggable points diff --git a/tools/viewer/ImageSlide.cpp b/tools/viewer/ImageSlide.cpp index f1ca9aa034fd..ce2c6c4d0b1d 100644 --- a/tools/viewer/ImageSlide.cpp +++ b/tools/viewer/ImageSlide.cpp @@ -10,6 +10,9 @@ #include "include/core/SkCanvas.h" #include "include/core/SkData.h" #include "include/core/SkImage.h" +#include "include/private/base/SkAssert.h" + +#include ImageSlide::ImageSlide(const SkString& name, const SkString& path) : fPath(path) { fName = name; diff --git a/tools/viewer/ImageSlide.h b/tools/viewer/ImageSlide.h index 66aa305c6712..7aad48d4f1d9 100644 --- a/tools/viewer/ImageSlide.h +++ b/tools/viewer/ImageSlide.h @@ -9,9 +9,14 @@ #define ImageSlide_DEFINED #include "include/core/SkImage.h" -#include "include/core/SkPicture.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" +#include "include/core/SkString.h" #include "tools/viewer/Slide.h" +class SkCanvas; + class ImageSlide : public Slide { public: ImageSlide(const SkString& name, const SkString& path); diff --git a/tools/viewer/MSKPSlide.cpp b/tools/viewer/MSKPSlide.cpp index 40e386318550..b87ce9fa306f 100644 --- a/tools/viewer/MSKPSlide.cpp +++ b/tools/viewer/MSKPSlide.cpp @@ -8,10 +8,17 @@ #include "tools/viewer/MSKPSlide.h" #include "include/core/SkCanvas.h" +#include "include/core/SkColor.h" #include "include/core/SkImage.h" +#include "include/core/SkPaint.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" #include "include/core/SkStream.h" #include "include/private/base/SkTPin.h" -#include "src/core/SkOSFile.h" + +#include +#include + #include "imgui.h" MSKPSlide::MSKPSlide(const SkString& name, const SkString& path) diff --git a/tools/viewer/MSKPSlide.h b/tools/viewer/MSKPSlide.h index 03f9d1fc8710..0dfee5890103 100644 --- a/tools/viewer/MSKPSlide.h +++ b/tools/viewer/MSKPSlide.h @@ -8,10 +8,17 @@ #ifndef MSKPSlide_DEFINED #define MSKPSlide_DEFINED +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" +#include "include/core/SkStream.h" +#include "include/core/SkString.h" #include "tools/MSKPPlayer.h" #include "tools/viewer/Slide.h" -class SkStreamSeekable; +#include +#include + +class SkCanvas; class MSKPSlide : public Slide { public: diff --git a/tools/viewer/SKPSlide.cpp b/tools/viewer/SKPSlide.cpp index 1bad11e696dd..55b80e8672e2 100644 --- a/tools/viewer/SKPSlide.cpp +++ b/tools/viewer/SKPSlide.cpp @@ -8,8 +8,13 @@ #include "tools/viewer/SKPSlide.h" #include "include/core/SkCanvas.h" +#include "include/core/SkPicture.h" #include "include/core/SkStream.h" -#include "src/core/SkOSFile.h" +#include "include/core/SkString.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkTo.h" + +#include SKPSlide::SKPSlide(const SkString& name, const SkString& path) : SKPSlide(name, SkStream::MakeFromFile(path.c_str())) { diff --git a/tools/viewer/SKPSlide.h b/tools/viewer/SKPSlide.h index 5e88ae0a39e2..ce8cb07e0fac 100644 --- a/tools/viewer/SKPSlide.h +++ b/tools/viewer/SKPSlide.h @@ -8,9 +8,19 @@ #ifndef SKPSlide_DEFINED #define SKPSlide_DEFINED -#include "include/core/SkPicture.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" #include "tools/viewer/Slide.h" +#include + +class SkCanvas; +class SkPicture; +class SkStream; +class SkString; + class SKPSlide : public Slide { public: SKPSlide(const SkString& name, const SkString& path); diff --git a/tools/viewer/SimpleStrokerSlide.cpp b/tools/viewer/SimpleStrokerSlide.cpp index df4b3040cf7b..9af6fff7a29a 100644 --- a/tools/viewer/SimpleStrokerSlide.cpp +++ b/tools/viewer/SimpleStrokerSlide.cpp @@ -14,6 +14,8 @@ #include "src/core/SkGeometry.h" +#include + namespace { ////////////////////////////////////////////////////////////////////////////// diff --git a/tools/viewer/SkSLDebuggerSlide.cpp b/tools/viewer/SkSLDebuggerSlide.cpp index 91f621a63a98..c655bcde9fa3 100644 --- a/tools/viewer/SkSLDebuggerSlide.cpp +++ b/tools/viewer/SkSLDebuggerSlide.cpp @@ -8,11 +8,20 @@ #include "tools/viewer/SkSLDebuggerSlide.h" #include "include/core/SkCanvas.h" +#include "include/core/SkColor.h" #include "include/core/SkStream.h" -#include "tools/viewer/Viewer.h" +#include "include/core/SkString.h" +#include "include/private/base/SkAssert.h" +#include "tools/sk_app/Application.h" #include #include +#include +#include +#include +#include +#include + #include "imgui.h" #ifdef SKSL_ENABLE_TRACING diff --git a/tools/viewer/SkSLDebuggerSlide.h b/tools/viewer/SkSLDebuggerSlide.h index 58dd816248d9..4a489ebeb4e4 100644 --- a/tools/viewer/SkSLDebuggerSlide.h +++ b/tools/viewer/SkSLDebuggerSlide.h @@ -8,10 +8,19 @@ #ifndef SkSLDebuggerSlide_DEFINED #define SkSLDebuggerSlide_DEFINED +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" #include "src/sksl/tracing/SkSLDebugTracePlayer.h" #include "src/sksl/tracing/SkSLDebugTracePriv.h" #include "tools/viewer/Slide.h" +class SkCanvas; + +namespace skui { +enum class InputState; +enum class ModifierKey; +} // namespace sk + #ifdef SKSL_ENABLE_TRACING class SkSLDebuggerSlide : public Slide { diff --git a/tools/viewer/SkSLSlide.cpp b/tools/viewer/SkSLSlide.cpp index a3303763b410..c02e64d1d0b2 100644 --- a/tools/viewer/SkSLSlide.cpp +++ b/tools/viewer/SkSLSlide.cpp @@ -8,18 +8,33 @@ #include "tools/viewer/SkSLSlide.h" #include "include/core/SkCanvas.h" +#include "include/core/SkClipOp.h" +#include "include/core/SkColor.h" +#include "include/core/SkData.h" #include "include/core/SkFont.h" +#include "include/core/SkFontTypes.h" +#include "include/core/SkImage.h" +#include "include/core/SkPaint.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkSamplingOptions.h" #include "include/core/SkStream.h" +#include "include/core/SkTileMode.h" #include "include/effects/SkGradientShader.h" -#include "include/effects/SkPerlinNoiseShader.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkSpan_impl.h" #include "include/sksl/SkSLDebugTrace.h" -#include "src/core/SkEnumerate.h" #include "tools/Resources.h" +#include "tools/sk_app/Application.h" #include "tools/viewer/Viewer.h" #include #include #include +#include +#include +#include + #include "imgui.h" using namespace sk_app; diff --git a/tools/viewer/SkSLSlide.h b/tools/viewer/SkSLSlide.h index 145beff501a6..7157678c4759 100644 --- a/tools/viewer/SkSLSlide.h +++ b/tools/viewer/SkSLSlide.h @@ -9,10 +9,24 @@ #define SkSLSlide_DEFINED #include "include/core/SkM44.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkShader.h" +#include "include/core/SkString.h" #include "include/effects/SkRuntimeEffect.h" #include "include/private/base/SkTArray.h" +#include "include/private/base/SkTemplates.h" #include "tools/viewer/Slide.h" +#include + +class SkCanvas; + +namespace skui { +enum class InputState; +enum class ModifierKey; +} // namespace sk + class SkSLSlide : public Slide { public: SkSLSlide(); diff --git a/tools/viewer/Slide.h b/tools/viewer/Slide.h index 546eb702002c..1086b2bdb82a 100644 --- a/tools/viewer/Slide.h +++ b/tools/viewer/Slide.h @@ -12,7 +12,8 @@ #include "include/core/SkSize.h" #include "include/core/SkString.h" #include "tools/Registry.h" -#include "tools/sk_app/Window.h" +#include "tools/skui/InputState.h" +#include "tools/skui/ModifierKey.h" class SkCanvas; class SkMetaData; diff --git a/tools/viewer/SlideDir.cpp b/tools/viewer/SlideDir.cpp index 38c17f1616ae..0529a354892c 100644 --- a/tools/viewer/SlideDir.cpp +++ b/tools/viewer/SlideDir.cpp @@ -8,10 +8,18 @@ #include "tools/viewer/SlideDir.h" #include "include/core/SkCanvas.h" +#include "include/core/SkColor.h" #include "include/core/SkCubicMap.h" +#include "include/core/SkFont.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkRect.h" +#include "include/core/SkString.h" #include "include/core/SkTypeface.h" +#include "include/private/SkBitmaskEnum.h" #include "include/private/base/SkTPin.h" +#include "include/utils/SkTextUtils.h" #include "modules/sksg/include/SkSGDraw.h" +#include "modules/sksg/include/SkSGGeometryNode.h" #include "modules/sksg/include/SkSGGroup.h" #include "modules/sksg/include/SkSGPaint.h" #include "modules/sksg/include/SkSGPlane.h" @@ -20,11 +28,15 @@ #include "modules/sksg/include/SkSGScene.h" #include "modules/sksg/include/SkSGText.h" #include "modules/sksg/include/SkSGTransform.h" +#include "tools/skui/InputState.h" +#include "tools/skui/ModifierKey.h" #include "tools/timer/TimeUtils.h" #include #include +namespace sksg { class InvalidationController; } + using namespace skia_private; class SlideDir::Animator : public SkRefCnt { diff --git a/tools/viewer/SlideDir.h b/tools/viewer/SlideDir.h index 03c4a39942df..70062305dc23 100644 --- a/tools/viewer/SlideDir.h +++ b/tools/viewer/SlideDir.h @@ -8,21 +8,26 @@ #ifndef SlideDir_DEFINED #define SlideDir_DEFINED -#include "tools/viewer/Slide.h" - +#include "include/core/SkPoint.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" +#include "include/core/SkTypes.h" #include "include/private/base/SkTArray.h" +#include "modules/sksg/include/SkSGGroup.h" +#include "modules/sksg/include/SkSGScene.h" +#include "tools/viewer/Slide.h" #include #include +class SkCanvas; class SkString; -namespace sksg { - -class Group; -class Scene; - -} // namespace sksg +namespace skui { +enum class InputState; +enum class ModifierKey; +} // namespace skui class SlideDir final : public Slide { public: @@ -55,7 +60,7 @@ class SlideDir final : public Slide { std::unique_ptr fFocusController; const int fColumns; - std::vector fRecs; + std::vector fRecs; std::unique_ptr fScene; std::vector> fSceneAnimators; sk_sp fRoot; diff --git a/tools/viewer/StatsLayer.cpp b/tools/viewer/StatsLayer.cpp index 269015a88c75..f96de7d9b749 100644 --- a/tools/viewer/StatsLayer.cpp +++ b/tools/viewer/StatsLayer.cpp @@ -9,9 +9,21 @@ #include "include/core/SkCanvas.h" #include "include/core/SkFont.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkPaint.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" #include "include/core/SkString.h" #include "include/core/SkSurface.h" #include "include/core/SkTime.h" +#include "include/core/SkTypeface.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkTDArray.h" + +#include +#include StatsLayer::StatsLayer() : fCurrentMeasurement(-1) diff --git a/tools/viewer/StatsLayer.h b/tools/viewer/StatsLayer.h index f7779b871b0e..3bbb9b40aa65 100644 --- a/tools/viewer/StatsLayer.h +++ b/tools/viewer/StatsLayer.h @@ -13,6 +13,8 @@ #include "include/private/base/SkTArray.h" #include "tools/sk_app/Window.h" +class SkSurface; + class StatsLayer : public sk_app::Window::Layer { public: StatsLayer(); diff --git a/tools/viewer/SvgSlide.cpp b/tools/viewer/SvgSlide.cpp index 0d21afd98c35..db72766af11e 100644 --- a/tools/viewer/SvgSlide.cpp +++ b/tools/viewer/SvgSlide.cpp @@ -17,11 +17,12 @@ #include "src/utils/SkOSPath.h" SvgSlide::SvgSlide(const SkString& name, const SkString& path) - : fPath(path) -{ + : fPath(path) { fName = name; } +SvgSlide::~SvgSlide() = default; + void SvgSlide::load(SkScalar w, SkScalar h) { auto stream = SkStream::MakeFromFile(fPath.c_str()); diff --git a/tools/viewer/SvgSlide.h b/tools/viewer/SvgSlide.h index 92cded39150b..b9c10318c648 100644 --- a/tools/viewer/SvgSlide.h +++ b/tools/viewer/SvgSlide.h @@ -8,13 +8,18 @@ #ifndef SvgSlide_DEFINED #define SvgSlide_DEFINED +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkString.h" #include "tools/viewer/Slide.h" +class SkCanvas; class SkSVGDOM; class SvgSlide final : public Slide { public: SvgSlide(const SkString& name, const SkString& path); + ~SvgSlide() override; void load(SkScalar winWidth, SkScalar winHeight) override; void unload() override; diff --git a/tools/viewer/TouchGesture.cpp b/tools/viewer/TouchGesture.cpp index db7c6c56078c..91852deda93d 100644 --- a/tools/viewer/TouchGesture.cpp +++ b/tools/viewer/TouchGesture.cpp @@ -5,11 +5,16 @@ * found in the LICENSE file. */ -#include +#include "tools/viewer/TouchGesture.h" #include "include/core/SkMatrix.h" #include "include/core/SkTime.h" -#include "tools/viewer/TouchGesture.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkFloatingPoint.h" + +#include +#include #define DISCRETIZE_TRANSLATE_TO_AVOID_FLICKER true diff --git a/tools/viewer/TouchGesture.h b/tools/viewer/TouchGesture.h index 46f2117ccc29..5e341da35688 100644 --- a/tools/viewer/TouchGesture.h +++ b/tools/viewer/TouchGesture.h @@ -9,6 +9,9 @@ #define TouchGesture_DEFINED #include "include/core/SkMatrix.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkScalar.h" #include "include/private/base/SkTDArray.h" class TouchGesture { diff --git a/tools/viewer/VariableWidthStrokerSlide.cpp b/tools/viewer/VariableWidthStrokerSlide.cpp index d0ec01e63007..12057b8d6dca 100644 --- a/tools/viewer/VariableWidthStrokerSlide.cpp +++ b/tools/viewer/VariableWidthStrokerSlide.cpp @@ -16,6 +16,7 @@ #include "tools/viewer/ClickHandlerSlide.h" #include +#include namespace { diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp index 977dab20d4bf..0694cb227156 100644 --- a/tools/viewer/Viewer.cpp +++ b/tools/viewer/Viewer.cpp @@ -7,44 +7,59 @@ #include "tools/viewer/Viewer.h" +#include "gm/gm.h" +#include "include/core/SkAlphaType.h" +#include "include/core/SkBlendMode.h" #include "include/core/SkCanvas.h" +#include "include/core/SkColor.h" +#include "include/core/SkColorPriv.h" +#include "include/core/SkColorType.h" #include "include/core/SkData.h" +#include "include/core/SkFontTypes.h" #include "include/core/SkGraphics.h" +#include "include/core/SkImage.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkPicture.h" #include "include/core/SkPictureRecorder.h" +#include "include/core/SkRect.h" +#include "include/core/SkSamplingOptions.h" #include "include/core/SkStream.h" #include "include/core/SkSurface.h" +#include "include/core/SkSurfaceProps.h" +#include "include/core/SkTextBlob.h" #include "include/gpu/GrDirectContext.h" +#include "include/private/base/SkDebug.h" #include "include/private/base/SkTPin.h" #include "include/private/base/SkTo.h" #include "include/utils/SkBase64.h" #include "include/utils/SkPaintFilterCanvas.h" +#include "src/base/SkTLazy.h" #include "src/base/SkTSort.h" +#include "src/base/SkUTF.h" #include "src/core/SkAutoPixmapStorage.h" -#include "src/core/SkColorSpacePriv.h" -#include "src/core/SkImagePriv.h" +#include "src/core/SkLRUCache.h" #include "src/core/SkMD5.h" #include "src/core/SkOSFile.h" #include "src/core/SkReadBuffer.h" #include "src/core/SkScan.h" #include "src/core/SkStringUtils.h" -#include "src/core/SkSurfacePriv.h" #include "src/core/SkTaskGroup.h" #include "src/core/SkTextBlobPriv.h" #include "src/core/SkVMBlitter.h" -#include "src/gpu/ganesh/GrDirectContextPriv.h" -#include "src/gpu/ganesh/GrGpu.h" -#include "src/gpu/ganesh/GrPersistentCacheUtils.h" -#include "src/image/SkImage_Base.h" #include "src/sksl/SkSLCompiler.h" +#include "src/sksl/SkSLString.h" #include "src/text/GlyphRun.h" #include "src/utils/SkJSONWriter.h" #include "src/utils/SkOSPath.h" #include "src/utils/SkShaderUtils.h" #include "tools/Resources.h" #include "tools/RuntimeBlendUtils.h" -#include "tools/ToolUtils.h" +#include "tools/SkMetaData.h" #include "tools/flags/CommandLineFlags.h" #include "tools/flags/CommonFlags.h" +#include "tools/skui/InputState.h" +#include "tools/skui/Key.h" +#include "tools/skui/ModifierKey.h" #include "tools/trace/EventTracingPriv.h" #include "tools/viewer/BisectSlide.h" #include "tools/viewer/GMSlide.h" @@ -53,18 +68,37 @@ #include "tools/viewer/SKPSlide.h" #include "tools/viewer/SkSLDebuggerSlide.h" #include "tools/viewer/SkSLSlide.h" +#include "tools/viewer/Slide.h" #include "tools/viewer/SlideDir.h" -#include "tools/viewer/SvgSlide.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #if defined(SK_GANESH) +#include "src/gpu/ganesh/GrCaps.h" +#include "src/gpu/ganesh/GrDirectContextPriv.h" +#include "src/gpu/ganesh/GrGpu.h" +#include "src/gpu/ganesh/GrPersistentCacheUtils.h" +#include "src/gpu/ganesh/GrShaderCaps.h" #include "src/gpu/ganesh/ops/AtlasPathRenderer.h" #include "src/gpu/ganesh/ops/TessellationPathRenderer.h" #endif -#include -#include -#include - #include "imgui.h" #include "misc/cpp/imgui_stdlib.h" // For ImGui support of std::string @@ -78,6 +112,7 @@ #if defined(SK_ENABLE_SVG) #include "modules/svg/include/SkSVGOpenTypeSVGDecoder.h" +#include "tools/viewer/SvgSlide.h" #endif using namespace skia_private; diff --git a/tools/viewer/Viewer.h b/tools/viewer/Viewer.h index 68a38ee200ff..23d63a9d2ec8 100644 --- a/tools/viewer/Viewer.h +++ b/tools/viewer/Viewer.h @@ -8,26 +8,49 @@ #ifndef Viewer_DEFINED #define Viewer_DEFINED -#include "gm/gm.h" -#include "include/core/SkExecutor.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkData.h" #include "include/core/SkFont.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkPaint.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" +#include "include/core/SkString.h" +#include "include/core/SkTypes.h" #include "include/gpu/GrContextOptions.h" +#include "include/private/base/SkTArray.h" +#include "include/private/gpu/ganesh/GrTypesPriv.h" +#include "modules/skcms/skcms.h" #include "src/core/SkScan.h" +#include "src/core/SkTHash.h" +#include "src/core/SkVM.h" #include "src/core/SkVMBlitter.h" -#include "src/sksl/SkSLString.h" #include "src/sksl/ir/SkSLProgram.h" #include "tools/gpu/MemoryCache.h" #include "tools/sk_app/Application.h" #include "tools/sk_app/CommandSet.h" +#include "tools/sk_app/DisplayParams.h" #include "tools/sk_app/Window.h" #include "tools/viewer/AnimTimer.h" #include "tools/viewer/ImGuiLayer.h" -#include "tools/viewer/Slide.h" #include "tools/viewer/StatsLayer.h" #include "tools/viewer/TouchGesture.h" -class SkCanvas; -class SkData; +#include +#include +#include +#include + +class SkImage; +class SkSurface; +class Slide; +namespace skui { +enum class InputState; +enum class Key; +enum class ModifierKey; +} // namespace skui class Viewer : public sk_app::Application, sk_app::Window::Layer { public: