diff options
Diffstat (limited to 'tools/sk_tool_utils.cpp')
-rw-r--r-- | tools/sk_tool_utils.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
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<SkColorFilter> Make(GrSRGBEffect::Mode mode) { + return sk_sp<SkColorFilter>(new SkSRGBColorFilter(mode)); + } + + sk_sp<GrFragmentProcessor> 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<SkColorFilter> MakeLinearToSRGBColorFilter() { + return SkSRGBColorFilter::Make(GrSRGBEffect::Mode::kLinearToSRGB); +} + +sk_sp<SkColorFilter> MakeSRGBToLinearColorFilter() { + return SkSRGBColorFilter::Make(GrSRGBEffect::Mode::kSRGBToLinear); +} +#endif + } // namespace sk_tool_utils |