SkBlendModePriv.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * Copyright 2016 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. #ifndef SkBlendModePriv_DEFINED
  8. #define SkBlendModePriv_DEFINED
  9. #include "include/core/SkBlendMode.h"
  10. #include "include/core/SkColor.h"
  11. #include "include/private/SkColorData.h"
  12. class SkRasterPipeline;
  13. bool SkBlendMode_SupportsCoverageAsAlpha(SkBlendMode);
  14. static inline bool SkBlendMode_CaresAboutRBOrder(SkBlendMode mode) {
  15. return (mode > SkBlendMode::kLastSeparableMode);
  16. }
  17. bool SkBlendMode_ShouldPreScaleCoverage(SkBlendMode, bool rgb_coverage);
  18. void SkBlendMode_AppendStages(SkBlendMode, SkRasterPipeline*);
  19. enum class SkBlendModeCoeff {
  20. kZero, /** 0 */
  21. kOne, /** 1 */
  22. kSC, /** src color */
  23. kISC, /** inverse src color (i.e. 1 - sc) */
  24. kDC, /** dst color */
  25. kIDC, /** inverse dst color (i.e. 1 - dc) */
  26. kSA, /** src alpha */
  27. kISA, /** inverse src alpha (i.e. 1 - sa) */
  28. kDA, /** dst alpha */
  29. kIDA, /** inverse dst alpha (i.e. 1 - da) */
  30. kCoeffCount
  31. };
  32. bool SkBlendMode_AsCoeff(SkBlendMode mode, SkBlendModeCoeff* src, SkBlendModeCoeff* dst);
  33. SkPMColor4f SkBlendMode_Apply(SkBlendMode, const SkPMColor4f& src, const SkPMColor4f& dst);
  34. #if SK_SUPPORT_GPU
  35. #include "src/gpu/GrXferProcessor.h"
  36. const GrXPFactory* SkBlendMode_AsXPFactory(SkBlendMode);
  37. #endif
  38. #endif