SkTileImageFilter.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * Copyright 2013 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 SkTileImageFilter_DEFINED
  8. #define SkTileImageFilter_DEFINED
  9. #include "include/core/SkFlattenable.h"
  10. #include "include/core/SkImageFilter.h"
  11. class SK_API SkTileImageFilter : public SkImageFilter {
  12. public:
  13. /** Create a tile image filter
  14. @param src Defines the pixels to tile
  15. @param dst Defines the pixels where tiles are drawn
  16. @param input Input from which the subregion defined by srcRect will be tiled
  17. */
  18. static sk_sp<SkImageFilter> Make(const SkRect& src,
  19. const SkRect& dst,
  20. sk_sp<SkImageFilter> input);
  21. SkIRect onFilterBounds(const SkIRect& src, const SkMatrix& ctm,
  22. MapDirection, const SkIRect* inputRect) const override;
  23. SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix& ctm,
  24. MapDirection, const SkIRect* inputRect) const override;
  25. SkRect computeFastBounds(const SkRect& src) const override;
  26. protected:
  27. void flatten(SkWriteBuffer& buffer) const override;
  28. sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
  29. SkIPoint* offset) const override;
  30. private:
  31. SK_FLATTENABLE_HOOKS(SkTileImageFilter)
  32. SkTileImageFilter(const SkRect& srcRect, const SkRect& dstRect, sk_sp<SkImageFilter> input)
  33. : INHERITED(&input, 1, nullptr), fSrcRect(srcRect), fDstRect(dstRect) {}
  34. SkRect fSrcRect;
  35. SkRect fDstRect;
  36. typedef SkImageFilter INHERITED;
  37. };
  38. #endif