SkRadialGradient.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * Copyright 2012 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 SkRadialGradient_DEFINED
  8. #define SkRadialGradient_DEFINED
  9. #include "src/shaders/gradients/SkGradientShaderPriv.h"
  10. class SkRadialGradient final : public SkGradientShaderBase {
  11. public:
  12. SkRadialGradient(const SkPoint& center, SkScalar radius, const Descriptor&);
  13. GradientType asAGradient(GradientInfo* info) const override;
  14. #if SK_SUPPORT_GPU
  15. std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
  16. #endif
  17. protected:
  18. SkRadialGradient(SkReadBuffer& buffer);
  19. void flatten(SkWriteBuffer& buffer) const override;
  20. void appendGradientStages(SkArenaAlloc* alloc, SkRasterPipeline* tPipeline,
  21. SkRasterPipeline* postPipeline) const override;
  22. private:
  23. SK_FLATTENABLE_HOOKS(SkRadialGradient)
  24. const SkPoint fCenter;
  25. const SkScalar fRadius;
  26. friend class SkGradientShader;
  27. typedef SkGradientShaderBase INHERITED;
  28. };
  29. #endif