GrColorSpaceInfo.cpp 1.2 KB

123456789101112131415161718192021222324252627
  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. #include "src/core/SkColorSpacePriv.h"
  8. #include "src/gpu/GrColorSpaceInfo.h"
  9. GrColorSpaceInfo::GrColorSpaceInfo(GrColorType colorType,
  10. SkAlphaType alphaType,
  11. sk_sp<SkColorSpace> colorSpace)
  12. : fColorSpace(std::move(colorSpace)), fColorType(colorType), fAlphaType(alphaType) {}
  13. GrColorSpaceXform* GrColorSpaceInfo::colorSpaceXformFromSRGB() const {
  14. // TODO: Make this atomic if we start accessing this on multiple threads.
  15. if (!fInitializedColorSpaceXformFromSRGB) {
  16. // sRGB sources are very common (SkColor, etc...), so we cache that transformation
  17. fColorXformFromSRGB = GrColorSpaceXform::Make(sk_srgb_singleton(), kUnpremul_SkAlphaType,
  18. fColorSpace.get(), kUnpremul_SkAlphaType);
  19. fInitializedColorSpaceXformFromSRGB = true;
  20. }
  21. // You can't be color-space aware in legacy mode
  22. SkASSERT(fColorSpace || !fColorXformFromSRGB);
  23. return fColorXformFromSRGB.get();
  24. }