SkTileImageFilter.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 "SkFlattenable.h"
  10. #include "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. sk_sp<SkImageFilter> onMakeColorSpace(SkColorSpaceXformer*) const override;
  31. private:
  32. SK_FLATTENABLE_HOOKS(SkTileImageFilter)
  33. SkTileImageFilter(const SkRect& srcRect, const SkRect& dstRect, sk_sp<SkImageFilter> input)
  34. : INHERITED(&input, 1, nullptr), fSrcRect(srcRect), fDstRect(dstRect) {}
  35. SkRect fSrcRect;
  36. SkRect fDstRect;
  37. typedef SkImageFilter INHERITED;
  38. };
  39. #endif