SkImageSource.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * Copyright 2015 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 SkImageSource_DEFINED
  8. #define SkImageSource_DEFINED
  9. #include "include/core/SkFlattenable.h"
  10. #include "include/core/SkImage.h"
  11. #include "include/core/SkImageFilter.h"
  12. class SK_API SkImageSource : public SkImageFilter {
  13. public:
  14. static sk_sp<SkImageFilter> Make(sk_sp<SkImage> image);
  15. static sk_sp<SkImageFilter> Make(sk_sp<SkImage> image,
  16. const SkRect& srcRect,
  17. const SkRect& dstRect,
  18. SkFilterQuality filterQuality);
  19. SkRect computeFastBounds(const SkRect& src) const override;
  20. protected:
  21. void flatten(SkWriteBuffer&) const override;
  22. sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
  23. SkIPoint* offset) const override;
  24. SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix& ctm,
  25. MapDirection, const SkIRect* inputRect) const override;
  26. private:
  27. SK_FLATTENABLE_HOOKS(SkImageSource)
  28. explicit SkImageSource(sk_sp<SkImage>);
  29. SkImageSource(sk_sp<SkImage>,
  30. const SkRect& srcRect,
  31. const SkRect& dstRect,
  32. SkFilterQuality);
  33. sk_sp<SkImage> fImage;
  34. SkRect fSrcRect, fDstRect;
  35. SkFilterQuality fFilterQuality;
  36. typedef SkImageFilter INHERITED;
  37. };
  38. #endif