diff options
author | Hal Canary <halcanary@google.com> | 2017-07-12 13:10:23 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-12 20:41:41 +0000 |
commit | 7cbf5e3e03754694157891e290ff30109b8e7583 (patch) | |
tree | 8ad4ad88c04a5ddbd920f3d8a2ee4478de2a7fcf /src/pdf/SkBitmapKey.h | |
parent | 5769dd2c9ad9443b8cf2d62748d5747e547c7ad5 (diff) |
SkPDF: simplify drawImage/Bitmap/Sprite code.
- SkImageSubset becomes SkKeyedImage
- SkPDFCanvas::onDraw{Bitmap, Image} go away
- Remove SkPDFCanvas: base classes now do the right thing.
- SkPDFDevice::draw{Bitmap,Image}{Rect,}() simplified
- 244 fewer SLOC.
All but a few PDFs are identical, those rasterize almost the same.
Change-Id: I3ceb3b8935c689719cedf1ad544b0407b5c1733e
Reviewed-on: https://skia-review.googlesource.com/22218
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'src/pdf/SkBitmapKey.h')
-rw-r--r-- | src/pdf/SkBitmapKey.h | 57 |
1 files changed, 1 insertions, 56 deletions
diff --git a/src/pdf/SkBitmapKey.h b/src/pdf/SkBitmapKey.h index a640468d62..99d88a3b86 100644 --- a/src/pdf/SkBitmapKey.h +++ b/src/pdf/SkBitmapKey.h @@ -7,9 +7,7 @@ #ifndef SkBitmapKey_DEFINED #define SkBitmapKey_DEFINED -#include "SkBitmap.h" -#include "SkImage.h" -#include "SkCanvas.h" +#include "SkRect.h" struct SkBitmapKey { SkIRect fSubset; @@ -20,58 +18,5 @@ struct SkBitmapKey { bool operator!=(const SkBitmapKey& rhs) const { return !(*this == rhs); } }; -/** - This class has all the advantages of SkBitmaps and SkImages. - */ -class SkImageSubset { -public: - SkImageSubset(sk_sp<SkImage> i, SkIRect subset = {0, 0, 0, 0}) - : fImage(std::move(i)) { - if (!fImage) { - fSubset = {0, 0, 0, 0}; - fID = 0; - return; - } - fID = fImage->uniqueID(); - if (subset.isEmpty()) { - fSubset = fImage->bounds(); - // SkImage always has a non-zero dimensions. - SkASSERT(!fSubset.isEmpty()); - } else { - fSubset = subset; - if (!fSubset.intersect(fImage->bounds())) { - fImage = nullptr; - fSubset = {0, 0, 0, 0}; - fID = 0; - } - } - } - - void setID(uint32_t id) { fID = id; } - - bool isValid() const { return fImage != nullptr; } - - SkIRect bounds() const { return SkIRect::MakeSize(this->dimensions()); } - - SkISize dimensions() const { return fSubset.size(); } - - sk_sp<SkImage> makeImage() const { - return fSubset == fImage->bounds() ? fImage : fImage->makeSubset(fSubset); - } - - SkBitmapKey getKey() const { return SkBitmapKey{fSubset, fID}; } - - void draw(SkCanvas* canvas, SkPaint* paint) const { - SkASSERT(this->isValid()); - SkRect src = SkRect::Make(fSubset), - dst = SkRect::Make(this->bounds()); - canvas->drawImageRect(fImage.get(), src, dst, paint); - } - -private: - SkIRect fSubset; - sk_sp<SkImage> fImage; - uint32_t fID; -}; #endif // SkBitmapKey_DEFINED |