From 964dec3948721808491b21b4ff4ff41a466443ec Mon Sep 17 00:00:00 2001 From: Brian Osman Date: Thu, 26 Jan 2017 09:32:33 -0500 Subject: Move SkGammaColorFilter to tools, limit to sRGB Similarly, limit GrGammaEffect to sRGB (and rename it). BUG=skia: Change-Id: I88feef11ab7040bca2fa4c2eed71923ded87a0d0 Reviewed-on: https://skia-review.googlesource.com/7375 Commit-Queue: Brian Osman Reviewed-by: Brian Salomon --- tools/sk_tool_utils.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'tools/sk_tool_utils.cpp') diff --git a/tools/sk_tool_utils.cpp b/tools/sk_tool_utils.cpp index 93f5b107f2..0383897bd8 100644 --- a/tools/sk_tool_utils.cpp +++ b/tools/sk_tool_utils.cpp @@ -22,6 +22,38 @@ DEFINE_bool(portableFonts, false, "Use portable fonts"); +#if SK_SUPPORT_GPU +#include "effects/GrSRGBEffect.h" +#include "SkColorFilter.h" + +// Color filter that just wraps GrSRGBEffect +class SkSRGBColorFilter : public SkColorFilter { +public: + static sk_sp Make(GrSRGBEffect::Mode mode) { + return sk_sp(new SkSRGBColorFilter(mode)); + } + + sk_sp asFragmentProcessor(GrContext*, SkColorSpace*) const override { + return GrSRGBEffect::Make(fMode); + } + + void filterSpan(const SkPMColor src[], int count, SkPMColor dst[]) const override { + SK_ABORT("SkSRGBColorFilter is only implemented for GPU"); + } + Factory getFactory() const override { return nullptr; } + +#ifndef SK_IGNORE_TO_STRING + void toString(SkString* str) const override {} +#endif + +private: + SkSRGBColorFilter(GrSRGBEffect::Mode mode) : fMode(mode) {} + + GrSRGBEffect::Mode fMode; + typedef SkColorFilter INHERITED; +}; +#endif + namespace sk_tool_utils { /* these are the default fonts chosen by Chrome for serif, sans-serif, and monospace */ @@ -586,4 +618,14 @@ void copy_to_g8(SkBitmap* dst, const SkBitmap& src) { } } +#if SK_SUPPORT_GPU +sk_sp MakeLinearToSRGBColorFilter() { + return SkSRGBColorFilter::Make(GrSRGBEffect::Mode::kLinearToSRGB); +} + +sk_sp MakeSRGBToLinearColorFilter() { + return SkSRGBColorFilter::Make(GrSRGBEffect::Mode::kSRGBToLinear); +} +#endif + } // namespace sk_tool_utils -- cgit v1.2.3