1/* 2 * Copyright 2017 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#ifndef SkToSRGBColorFilter_DEFINED 9#define SkToSRGBColorFilter_DEFINED 10 11#include "SkColorFilter.h" 12#include "SkRefCnt.h" 13 14class SkColorSpace; 15class SkRasterPipeline; 16 17/** 18 * Color filter that converts from supplied color space to sRGB (both gamut and transfer function). 19 */ 20class SK_API SkToSRGBColorFilter : public SkColorFilter { 21public: 22 static sk_sp<SkColorFilter> Make(sk_sp<SkColorSpace> srcColorSpace); 23 24#if SK_SUPPORT_GPU 25 std::unique_ptr<GrFragmentProcessor> asFragmentProcessor( 26 GrContext*, const GrColorSpaceInfo&) const override; 27#endif 28 29 SK_TO_STRING_OVERRIDE() 30 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkToSRGBColorFilter) 31 32private: 33 void flatten(SkWriteBuffer&) const override; 34 SkToSRGBColorFilter(sk_sp<SkColorSpace>); 35 void onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAlloc*, 36 bool shaderIsOpaque) const override; 37 38 sk_sp<SkColorSpace> fSrcColorSpace; 39 40 typedef SkColorFilter INHERITED; 41}; 42 43#endif 44