SkModeColorFilter.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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 SkModeColorFilter_DEFINED
  8. #define SkModeColorFilter_DEFINED
  9. #include "include/core/SkColorFilter.h"
  10. #include "include/core/SkFlattenable.h"
  11. class SkModeColorFilter : public SkColorFilter {
  12. public:
  13. static sk_sp<SkColorFilter> Make(SkColor color, SkBlendMode mode) {
  14. return sk_sp<SkColorFilter>(new SkModeColorFilter(color, mode));
  15. }
  16. uint32_t getFlags() const override;
  17. #if SK_SUPPORT_GPU
  18. std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(
  19. GrRecordingContext*, const GrColorSpaceInfo&) const override;
  20. #endif
  21. protected:
  22. SkModeColorFilter(SkColor color, SkBlendMode mode);
  23. void flatten(SkWriteBuffer&) const override;
  24. bool onAsAColorMode(SkColor*, SkBlendMode*) const override;
  25. bool onAppendStages(const SkStageRec& rec, bool shaderIsOpaque) const override;
  26. private:
  27. SK_FLATTENABLE_HOOKS(SkModeColorFilter)
  28. SkColor fColor;
  29. SkBlendMode fMode;
  30. friend class SkColorFilter;
  31. typedef SkColorFilter INHERITED;
  32. };
  33. #endif