SkImageSource.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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 "SkFlattenable.h"
  10. #include "SkImage.h"
  11. #include "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. sk_sp<SkImageFilter> onMakeColorSpace(SkColorSpaceXformer*) const override;
  25. SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix& ctm,
  26. MapDirection, const SkIRect* inputRect) const override;
  27. private:
  28. SK_FLATTENABLE_HOOKS(SkImageSource)
  29. explicit SkImageSource(sk_sp<SkImage>);
  30. SkImageSource(sk_sp<SkImage>,
  31. const SkRect& srcRect,
  32. const SkRect& dstRect,
  33. SkFilterQuality);
  34. sk_sp<SkImage> fImage;
  35. SkRect fSrcRect, fDstRect;
  36. SkFilterQuality fFilterQuality;
  37. typedef SkImageFilter INHERITED;
  38. };
  39. #endif