/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrColorSpaceInfo_DEFINED #define GrColorSpaceInfo_DEFINED #include "GrColorSpaceXform.h" #include "GrTypes.h" #include "SkColorSpace.h" #include "SkRefCnt.h" /** Describes the color space properties of a surface context. */ class GrColorSpaceInfo { public: GrColorSpaceInfo(sk_sp<SkColorSpace>, GrPixelConfig); bool isLinearlyBlended() const { return fColorSpace && fColorSpace->gammaIsLinear(); } SkColorSpace* colorSpace() const { return fColorSpace.get(); } sk_sp<SkColorSpace> refColorSpace() const { return fColorSpace; } GrColorSpaceXform* colorSpaceXformFromSRGB() const; sk_sp<GrColorSpaceXform> refColorSpaceXformFromSRGB() const { return sk_ref_sp(this->colorSpaceXformFromSRGB()); } // TODO: Remove or replace with SkColorType GrPixelConfig config() const { return fConfig; } private: sk_sp<SkColorSpace> fColorSpace; mutable sk_sp<GrColorSpaceXform> fColorXformFromSRGB; GrPixelConfig fConfig; mutable bool fInitializedColorSpaceXformFromSRGB; }; #endif