SkColorFilter_Matrix.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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 SkColorFilter_Matrix_DEFINED
  8. #define SkColorFilter_Matrix_DEFINED
  9. #include "include/core/SkColorFilter.h"
  10. #include "include/core/SkFlattenable.h"
  11. class SkColorFilter_Matrix : public SkColorFilter {
  12. public:
  13. SkColorFilter_Matrix() {}
  14. explicit SkColorFilter_Matrix(const float array[20]);
  15. uint32_t getFlags() const override;
  16. #if SK_SUPPORT_GPU
  17. std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(
  18. GrRecordingContext*, const GrColorSpaceInfo&) const override;
  19. #endif
  20. static void RegisterFlattenables();
  21. protected:
  22. void flatten(SkWriteBuffer&) const override;
  23. bool onAsAColorMatrix(float matrix[20]) const override;
  24. private:
  25. SK_FLATTENABLE_HOOKS(SkColorFilter_Matrix)
  26. bool onAppendStages(const SkStageRec& rec, bool shaderIsOpaque) const override;
  27. float fMatrix[20];
  28. uint32_t fFlags;
  29. void initState();
  30. typedef SkColorFilter INHERITED;
  31. };
  32. #endif